Equals vs == 연산자
== 연산자 , Equals의 차이
equals 는 데이터(value) 값을 비교하는 메소드 이며, == 은 주소값 (reference) 을 비교해주는 비교 연산자 이다.
public class Test{
public static void main(String[] args){
Stirng A = "Java"; // 리터럴(literal) 주소값 : 1000 (예시 - 실제주소는 다름)
Stirng B = "Java"; // 리터럴(literal) 주소값 : 1000
Stirng C = new Stirng("Java"); // new 연산자 주소값 : 2000
Stirng D = new Stirng("Java"); // new 연산자 주소값 : 3000
}
}
리터럴(literal)을 사용해서 String을 생성하면 String Constant Pool 영역에 존재하고,
new 연산자를 통해 String을 생성하면 Heap 영역에 존재하게 된다.

결과
System.out.println( A == B ); // true 주소값 : 1000 == 1000
System.out.println( B == C ); // false 주소값 : 1000 == 2000
System.out.println( C == D ); // false 주소값 : 2000 == 3000
System.out.println( A.equals(B) ); // true
System.out.println( B.equals(C) ); // true
System.out.println( C.equals(D) ); // true참고
참고
https://joonpyo-hong.tistory.com/entry/Java-equals%EC%99%80-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90