최대 1 분 소요

== 연산자 , 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 영역에 존재하게 된다.

img

결과
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

태그:

카테고리:

업데이트: