logo

공통점

둘 다 반환값이 boolean이라는점

<br/>

차이점

  1. 형태가 다릅니다.
  • ==는 연산자

  • equals()는 메소드

<br/>

<br/>

  1. 비교하는 값이 다릅니다.

<br/>

이 개념을 설명하기전에 String과, new String()의 차이를 이해해야 합니다.

String a1 = "AA";

위의 코드를 선언하면 Heap 영역에 String Pool 공간에 AA라는 문자열을 등록합니다.

<br/>

a1과 같은 문자열의 a2를 선언하였습니다.

String a1 = "AA";
String a2 = "AA";

a2는 Heap 영역의 String Pool 공간에 AA라는 문자열이 있는지 확인하고, 있으면 해당 문자열을 참조하게됩니다.

<br/>

그러나 new String()은 다릅니다.

String a1 = "AA";
String a2 = "AA";
String a3 = new String("AA");
<br/>

new String()으로 선언되면, String Pool을 참조하지않고 새로운 객체를 생성한다.

<br/>

그럼 이제 ==과, equals() 메소드의 차이를 보자.

==는 주소를 비교하고, equals()는 내용을 비교한다.

그렇다면 a1과 a2는 String Pool에 등록된 AA를 참조하니 같은 주소를 참조할 것입니다.

String a1 = "AA";
String a2 = "AA";
String a3 = new String("AA");
		
System.out.println(a1 == a2);
true
<br/>

같은 주소를 참조하므로 리턴값은 true입니다.

<br/>

그럼 a1과 a3를 == 연산자로 비교하면 다음과 같습니다.

String a1 = "AA";
String a2 = "AA";
String a3 = new String("AA");
		
System.out.println(a1 == a2);
System.out.println(a1 == a3);
true
false

a1과 a3는 주소가 다르므로 리턴값은 false 입니다.

== 연산자는 주소를 비교하는 것을 확인 할 수 있습니다.

<br/>

반면에, equals() 메소드는 내용을 비교하여 리턴합니다.

a1과 a3를 equals()메소드로 비교해봅니다.

String a1 = "AA";
String a2 = "AA";
String a3 = new String("AA");
		
System.out.println(a1 == a2);
System.out.println(a1 == a3);
System.out.println(a1.equals(a3));
true
false
true

결과는 내용이 같으므로 true입니다.

equals() 메소드는 내용을 비교하는 것을 확인 할 수 있습니다.

<br/>

그럼 다음과 같은 상황도 있습니다.

new String() 으로 새로 생성된 객체를 String.intern() 메소드를 호출하면

String Pool에 등록된 주소를 참조합니다. 그 내용을 확인하기 위해 다음과 같이 코드를 작성하였습니다.

String a1 = "AA";
String a2 = "AA";
String a3 = new String("AA");
		
System.out.println(a1 == a2);
System.out.println(a1 == a3);
System.out.println(a1.equals(a3));
System.out.println(a1 == a3.intern());
true
false
true
true

결과는 String Pool에 AA 문자열을 참조하게되어, 동일한 주소값을 가지므로 true를 반환합니다.

<br/>

<br/>

참조

<a href="http://hoit89.tistory.com/entry/String-Stringintern-String-poolequals">http://hoit89.tistory.com/entry/String-Stringintern-String-poolequals</a>

<a href="https://ojava.tistory.com/15">https://ojava.tistory.com/15</a>

CommentCount 0
이전 댓글 보기
등록
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
TOP