JAVA Programming

[57] String 클래스 힙메모리 , 상수풀

꾸준히개발하자 2020. 7. 20. 09:53

String , Wrapper 클래스

String 클래스

String 클래스 선언하기

 

String str2 = “abc”;

String str3 = “abc”;  상수풀에 있는 문자열을 공유하게 된다.

 

String 클래스는 한번 선언되거나 생성된 문자열은 변경할수없다.

String 클래스의 concat() 메소드 혹은 “+” 를 이용하여 String 을 연결하는 경우 새로운 메모리를 가리키게 된다. 안쓰이는것은 가비지컬렉터

, 한번 생성된 문자열은 불변이다.

 

package string;

public class StringTest {
	
	public static void main(String[] args) {
		
		String str1 = new String("abc");
		String str2 = new String("abc");
		
		System.out.println(str1 == str2); // false 힙메모리에 따로 저장된다.
		
		String str3 = "abc"; // 상수풀에 저장되서 같은곳을 가리킨다.
		String str4 = "abc";
		
		System.out.println(str3 == str4); // 상수풀에서 공유한다.  
		
	}
}

 

package string;

public class StringClassTest2 {
	public static void main(String[] args) {
		
		String java = new String("자바");
		String android = new String("android");
		System.out.println(System.identityHashCode(java)); // 해시코드 값 
		
		String javaandroid = java.concat(android); // 새로운 메모리 String 를 연결한다. 
		System.out.println(javaandroid); // 새로운 메모리에 생성됨 
		System.out.println(System.identityHashCode(javaandroid)); // 해시코드값
		
		// 연결을 하면 새로운 메모리가 생성됨 기존에 있는
		
		
	}
}