만족

[JAVA] String 클래스의 equals메소드와 ==연산자의 차이점 본문

[JAVA] String 클래스의 equals메소드와 ==연산자의 차이점

JAVA/설명 Satisfaction 2017. 12. 19. 20:57

String a1="ABC";

String a2=new String("ABC");


으로 선언되었다고 가정하자.


==연산자


==연산자는 두 변수가 서로 같은 Heap영역을 참조하는지를 가리킨다.


a1와 a2는 모두 매개값으로 "ABC"를 갖지만, a2는 new 연산자를 사용하여 새로운 인스턴스를 생성하였기 때문에


서로 다른 Heap영역을 참조하게 되고, a1==a2는 false를 반환한다


equals메소드


equals메소드는 매개값이 같은지를 비교한다


그렇기 때문에 a1과 a2가 참조하는 Heap영역이 다르더라도, 매개값이 "ABC"로 같으므로


a1.equals(a2)는 true를 반환한다.





Comments