String str1 = "apple"; //리터럴을 이용한 방식 String str2 = "apple"; //리터럴을 이용한 방식 String str3 = new String("example"); //new 연산자를 이용한 방식 String str4 = new String("example"); //new 연산자를 이용한 방식
string constant pool
이라는 영역에 생성intern()
메서드가 호출됨intern()
: 주어진 문자열이 string constant pool에 존재하는지 검색해서 존재하면 주소를 반환Heap
영역에 생성비교하고자 하는 대상의 주소값을 비교
public class compare {
public static void main(String[] args) {
String s1 = "apple";
String s2 = new String("apple");
if(s1 == s2) {
System.out.println("일치");
}else {
System.out.println("불일치");
}
}
}
비교하고자 하는 대상의 값 자체를 비교
public class compare {
public static void main(String[] args) {
String s1 = "apple";
String s2 = new String("apple");
if(s1.equals(s2)) {
System.out.println("일치");
}else {
System.out.println("불일치");
}
}
}
equals()와 == 연산자의 차이를 잘 몰라서 알고리즘을 푸는데, 계속
맞왜틀
을 하고 있었다. 이번 기회에 주소값비교와 단순 값 비교라는 차이점을 알게되었으니 같은 실수는 반복하지 말자!
오 저도 도움이 많이 되네요! 퍼가요~(하트)