package array03;

public class StringEX01 {
	public static void main(String[] args) {
		String s1 = new String("나무");
		String s2 = new String("나무");
		System.out.println(s1 == s2);

		String s3 = "나무";
		String s4 = "나무";
		System.out.println(s3 == s4);

		System.out.println(s1 == s4);

		System.out.println(s1.equals(s4));

	}
}

 

String은 첫글자가 대문자이기때문에 클래스다

하지만 String s = new String("나무"); 
->heap에 만들어짐

값을 바꿔도 주소가 그대로 값만 바뀐다

String s = "나무";  
-> StringConstantPool에 만들어짐

String은 heap안의 StringConstantPool에 저장된다(자바만의 특징)
heap과 다르게
StringConstantPool에 같은 값이 있는지 찾고
있다면 같은 주소를 저장하고
없다면 새로운 주소를 만들어서 저장 

String s = "나무";
s =  s+ "안녕";
s 주소에 넣는 것이 아니라
새로운 주소를 만들어서 저장

문자열을 계속 더하고 싶다면
새로운 주소를 만들지 않는 new로 바꿔서 사용하는 것이 좋다

check.equals("n")
는 처음에 == 으로 값을 비교하고 같으면 break
주소값이면 주소로 찾아가 서로 비교함.

 

 

+ Recent posts