728x90

문자열을 비교할 때 ==을 써도 true가 출력될 때가 있고, false가 출력될 때가 있다. 왜 값이 다를까?


String 타입의 값을 할당할 때 String 변수를 생성할 때 두가지 방법이 있습니다.

 

// 1. 리터럴 생성 방식.
String str1 = "test";
String str2 = "test";

// 2. new 생성 방식.
String str3 = new String("test");
String str4 = new String("test");

리터럴 방식으로 "test"값을 할당하는 경우는 주소값이 같다. 하지만 new 생성자로 값을 할당하는 경우는 value는 같지만 주소값은 다르다.

 

이때 new로 생성한 경우의 주소값이 다르기 때문에 문자열 값의 정확한 비교를 하기 위해 equals()를 사용해야 하는 것이다.

 

// 1. 리터럴 생성 방식.
String str1 = "test";
String str2 = "test";

// 2. new 생성 방식.
String str3 = new String("test");
String str4 = new String("test");

System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
System.out.println(str3= str4)
System.out.println(str3equals(str4);

// 결과
// true
// true
// false
// true

 

728x90
TOP