비교 연산자(==)
는 주소값을 비교하는 연산자로 비교하고자 하는 두 대상의 주소값을 비교하지만,
equals()
는 비교하고자 하는 두 대상의 값 자체를 비교한다.
String str1 = "test";
String str2 = "test";
리터럴 방식은 메모리가 String Constant Pool
이라는 영역에 할당,
하나의 메모리 영역에만 존재 str1, str2
는 같은 문자열을 참조
String str3 = new String("test");
String str4 = new String("test");
new 연산자를 통해 문자열 객체를 생성하는 방식은 메모리가 heap
이라는 영역에 할당
각각의 메모리 영역이 존재 str3, str4
는 각각의 문자열을 참조
참조
1. [Java] 문자열 비교하기 == , equals() 의 차이점
2. 자바의 String 객체와 String 리터럴