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 더할때 형변환 하지 않아도 된다. , 호환해서 쓸수있다