String : 문자열이 추가될 때마다 메모리 주소가 변경 됨

StringBuffer : 문자열이 추가 되어도 메모리 주소는 변하지 않음, 동기화 지원

StringBuilder : 문자열이 추가 되어도 메모리 주소는 변하지 않음, 동기화 미지원

package Study;

public class StringStudy {

	public static void main(String[] args) {
		
		/*String*/
		String str = new String("hello");//hello
		System.out.println(str.hashCode());//메모리 주소 : 99162322
		str = str.concat(" world");//hello world
		System.out.println(str.hashCode());//메모리 주소 : 1794106052
		
		/*StringBuffer : 동기화 지원*/
		StringBuffer strBuffer = new StringBuffer("hello");//hello
		System.out.println(strBuffer.hashCode());//메모리 주소 : 366712642
		strBuffer.append(" world");//hello world
		System.out.println(strBuffer.hashCode());//메모리 주소 : 366712642
		
		/*StringBuilder : 동기화 미지원*/
		StringBuilder strBuilder = new StringBuilder("");//StringBuilder strBuilder = ""; X
		System.out.println(strBuilder.hashCode());//메모리 주소 : 1829164700
		strBuilder.append(" world");//hello world
		System.out.println(strBuilder.hashCode());//메모리 주소 : 1829164700

	}

}

String은 문자열이 추가, 삭제 될때마다 메모리 주소가 변경되므로 잦은 문자열의 변경이 있는경우

StringBuffer, StringBuilder보다 연산속도가 느리다 

'Programming > JAVA' 카테고리의 다른 글

[JAVA] JUnit  (0) 2020.09.25
[lombok] 롬복 설치 방법  (0) 2020.09.23
[JAVA] 프로그래밍 네이밍 규칙  (0) 2020.09.17
[Spring] JSON  (0) 2020.09.16
[JAVA] Serializable(직렬화) 와 Deserialize(역직렬화)  (0) 2020.09.16

+ Recent posts