JAVA Programming
[58] StringBuilder , StringBuffer 기본적인 char[] 배열을 멤버변수 클래스 , Wrapper 클래스 정의
꾸준히개발하자
2020. 7. 20. 10:13
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 더할때 형변환 하지 않아도 된다. 즉, 호환해서 쓸수있다