package string;
// StringBuilder
// append 가 되고 value값이 바뀌고 나서 toString 으로 해서 String값을 얻어온다.
public class StringTest2 {
public static void main(String[] args) {
String java = new String("Java");
String android = new String("android");
StringBuilder buffer = new StringBuilder(java);
System.out.println(System.identityHashCode(buffer)); // 연결하기 전의 메모리값
buffer.append("adnroid");
System.out.println(System.identityHashCode(buffer)); // 연결하고 나서 메모리값
java = buffer.toString(); // toString 하면 반환된다.
}
}
가변적인 배열을 갖는데 메모리를 쓰는게 아니라 연결이 된다.
StringBuilder 는 멀티쓰레드 에서의 동기화가 진행안되고
StringBuffer 는 멀티쓰레드에서 동기화가 된다.
둘이 공통점으로 String을 짜르거나 더하거나 삽입하거나 할수있다.
다양한 오퍼레이션이 있는데
그중 append 메소드로 String을 연결시켰다.
연결 전과 후의 identityHashCode() 를 통해 해시코드값을 확인하면 값이 같은것을 알수있다.
기본 자료형 에 대한 클래스
기본자료형은 c언어에서 넘어온 자료형인데 객체지향에 어긋난다고 하지만
클래스로 만들 때 랩 = 감싸다 라는 뜻으로 Wrapper 클래스
toString ,hashCode 등 오버라이딩이 된다.
new 했을때랑 생성자에서 값을 가져올때랑 메모리사용이 다르다.
자바 1.5 이전에는 기본형과 wrapper 클래스를 더할수없었는데 지금은 기본형과 wrapper 더할때 형변환 하지 않아도 된다. 즉, 호환해서 쓸수있다
'JAVA Programming' 카테고리의 다른 글
[61] 컬렉션 프레임 워크 란? (0) | 2020.07.20 |
---|---|
[59] 제네릭 프로그래밍 (0) | 2020.07.20 |
[57] String 클래스 힙메모리 , 상수풀 (0) | 2020.07.20 |
[56] 끄적이기 equals(Object obj) , 부모 instanceof 자식 타입속하나 (0) | 2020.07.20 |
[56] 타입을 쓸수 없는 경우 동적로딩 reflect 프로그래밍 (0) | 2020.07.20 |