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
'Language > Back End' 카테고리의 다른 글
Java ] char to ascii 변환 방법 / 문자를 ascii 숫자 값으로 변환하는 방법 (0) | 2022.06.16 |
---|---|
Java] BigDecimal을 int형으로 변환 (BigDecimal to int) (0) | 2022.06.07 |
Java ] Comparable과 Comparator의 개념 및 차이 (0) | 2022.03.10 |
Java ] 자바 인터페이스(interface), 구현(implements) 사용방법 및 추상 클래스(abstarct)와 차이 비교 (0) | 2022.01.16 |
Java ] Static이란? / Static 사용하는 이유 / Static 사용방법 (0) | 2021.12.21 |