본문 바로가기

Programming/Java & JSP & Spring

[Java] 스트링 비교 (equals와 ==의 차이)

기본적으로 자바에서 스트링을 비교할 때 eqauls() 함수 또는 == 식을 이용한다.

둘 다 boolean값을 리턴해준다는 공통점이 있지만 차이점이 존재한다.


형태의 차이

equals()는 객체끼리 내용(값)을 비교할 수 있는 '메소드'이다.

==는 객체의 참조(주소)값을 비교하는 '연산자'이다.


비교방식의 차이

앞서 말했듯이 equals()는 내용 자체를 비교하고, ==는 주소를 비교한다.

이는 Call By Reference, Call By Value에 대한 이해가 필요하다.


예를 들어, 다음과 같은 문자열을 생성한다.

String a = "Test";

String b = a;

String c = new String("Test");


변수 a, b, c 모두 "Test"라는 내용을 가지고 있지만, 주소값은 다르다.

a와 b는 같은 주소의 값을 할당 받고, c는 다른 주소를 할당 받는다.


이를 비교했을 경우,

equals() 함수를 사용할 경우 모두 같다고 나오지만

== 연산자를 사용할 경우 a와 b는 같지만 c는 다르다고 출력되는 것을 볼 수 있다.






※ 출처 :

http://ojava.tistory.com/15

http://postitforhooney.tistory.com/entry/Java자바자바에서-스트링-비교하기equals와-의-차이점