Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

charminseok

[Java] 동등성, 동일성 본문

JAVA

[Java] 동등성, 동일성

charminseok 2022. 4. 11. 21:52

동등성과 동일성 둘다 무엇인가 같은지 비교할 때 사용되는 개념이다.

 

동등성

동등성은 두 객체가 같은 정보를 가지고 있는 경우 동등하다라고 할 수 있다. 서로 다른 주소에 만들어진 객체라도 그 안에 들어있는 값이 같다면 동등성이 성립하는 것이다. 동등성은 equals()로 확인할 수 있다.

 

String s1 = new String("asdf");

String s2 = new String("asdf");

System.out.println(s1.equals(s2)); // True

System.out.println(s1 == s2); // False

 

위와 같은 상황에서는 s1과 s2의 값이 같기 때문에 동등하다고 볼 수 있다.

 

 

동일성

동일성은 두 객체가 같은 주소에 있는 객체를 가리킬 때, 결국 완전히 같은 객체의 경우 동일하다고 할 수 있다. 위에 동등성에서와 같은 예로 s1과 s2는 값은 같지만 서로 다른 주소에 있는 다른 객체이기 때문에 동일하지는 않다.

 

String s1 = "asdf";

String s2 = "asdf";

System.out.println(s1.equals(s2)); // True

System.out.println(s1 == s2); // True

 

위와 같은 경우엔 String 객체가 String pool에 생성되 "asdf"라는 객체가 하나만 생성되고 s1, s2 둘 다 하나의 "asdf"를 가리키기때문에 동일하다.

 

equals()

equals함수는 내부적으로 먼저 동일성을 비교하고 동일하지 않다면, 객체에 때라 비교를 한다.

 

EX) String의 경우 길이를 비교하고 길이가 같다면 문자 하나하나 비교해 동등성을 비교한다.

 

equals가 정의되어 있지만 오버라이딩해 사용할 수 있다.

'JAVA' 카테고리의 다른 글

[Java Test] 테스트  (0) 2022.09.03
[Java] concurrentHashMap  (0) 2022.05.01
[Java] 자바 동기화 컬렉션(Synchronized Collection)  (0) 2022.04.25
[Java] 싱글톤  (0) 2022.04.10
[JAVA] Garbage Collection  (0) 2022.04.06