◽ Java language/Java

[Java - (13) ] " == " VS " .equals() "

kkk20000a 2019. 8. 26. 08:49

문자열은 == 연산자로 비교할 수 없다.

 

더욱 정확히 설명하자면, Java에서는 String이 int, long과 같은 원초적인 타입이 아니라 객체입니다.

객체 끼리 비교할 때, '==' 연산자를 사용하면 메모리 주소를 비교하게 됩니다.

그래서, Java에서는 각 객체의 내용을 비교하기 위해 보통 .equals 라는 메서드를 가지고 있습니다.

 

▶ 참고 : 

1번 : 인스턴스가 매번 새로 생성되므로 str1과 str2의 주소 값이 다름

2번 : 문자열 값은 같으므로 true 반환

3번 : 문자열 abc 상수 풀에 저장되어 있으므로 str3과 str4가 가리키는 주소 값이 같음

4번 문자열 값도 같으므로 true 반환

 

비교 연산자 (eq, ne, empty) 개념


== eq
!= ne
값이 널인지 찾기 empty name(변수명), empty name 둘 다 ok