String str1 = new String("Java");
String str2 = "Java";
String str1 = "Java";
String str2 = "Java";
String str3 = new String("Java");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
같은 "Java" 인데 str1
과 str2
는 같고 str1
과 str3
은 다르다고 나옴
일단 ==
연산은 값을 비교하는 것이 아니라 같은 메모리를 참조하는지 비교하는 것
str1
은 String Pool에 값이 저장됨str2
는 이미 같은 문자열이 있으므로 str1
과 같은 String Pool에 저장됨str3
은 Heap 영역에 저장됨따라서 str1
과 str2
는 같은 메모리를 참조하지만 str3
는 다른 메모리에 값이 저장되어있으므로 결과값이 false가 나옴
두 문자열의 값을 비교하는 메서드
String str1 = "Java";
String str2 = "Java";
String str3 = new String("Java");
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
문자열 비교는 equals()
로 습관화하는 것이 좋음