티스토리 뷰
728x90
동일성 및 동등성의 의미
동일성 (equality)
- 두개의 오브젝트가 완전히 동일한 것을 의미한다.
- 하나의 오브젝트만 존재하는것이며 그 오브젝트를 참조하는 여러개의 레퍼런스 변수를 갖고 있는것을 의미한다. (정확히 같은 메모리 주소를 가지고 있음)
동등성 (identity)
- 동일한 정보를 가지고 있는 오브젝트를 의미한다.
- 메모리상에 각기 다른 오브젝트가 존재하는 것이며 각 오브젝트의 기준에 따라 동등하다고 판단한다.
자바와 코틀린의 동등성 연산
자바
- 자바에서 원시타입 비교시 ==를 사용한다.
- 참조변수에서 ==를 사용할 경우 주소값을 비교한다. (동일성)
- 자바에서 두 참조변수의 동등성을 알기 위해서는 .equals를 사용해야한다. (동등성)
코틀린
- 코틀린에서는 자바와 달리 ==를 사용시 내부적으로 .equals를 호출한다. (동등성)
- 주소값을 비교하고 싶다면 ===을 사용한다. (동일성)
자바와 코틀린에서의 동등성 연산이 다르니 주의해서 사용해야 한다.
//JAVA
// String Constant Pool 저장 안되게함
String a = new String("hello");
String b = new String("hello");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
//Kotlin
// String Constant Pool 저장 안되게함
val a = String(StringBuilder("hello"))
val b = String(StringBuilder("hello"))
println(a == b) // true
println(a === b) // false
출처
https://kwssite.tistory.com/23
https://yeon-log.tistory.com/7
https://wooooooak.github.io/kotlin/2019/02/24/kotiln_%EB%8F%99%EB%93%B1%EC%84%B1%EC%97%B0%EC%82%B0/
728x90
'개발 언어 > 코틀린' 카테고리의 다른 글
코틀린(Kotlin) | 범위 표현식 (0) | 2019.06.21 |
---|---|
코틀린(Kotlin) | 분기문 (if, when) (0) | 2019.06.21 |
코틀린(Kotlin) | 변수 (0) | 2019.06.21 |
코틀린(Kotlin) | Kotlin (0) | 2019.06.21 |
코틀린(Kotlin) | 공부하게 된 이유 (0) | 2019.06.21 |
댓글