동일성 : 두개의 오브젝트가 주소값까지 똑같다
동등성 : 두개의 오브젝트가 주소값이 다르더라도 같은 값을 가지고있음
val a = String(StringBuilder("hello"))
val b = String(StringBuilder("hello"))
println(a == b) // true, 동등성, 값만 똑같고 저장된 주소는 다름
println(a === b) // false, 동일성, 주소까지 똑같음
println(a.equals(b)) // true, 동등성, 값만 똑같고 저장된 주소는 다름
위 코드에서 StringBuilder는 각 주소값을 다르게 하기위해 사용함
String 문자끼리 더할때는 "a" + "b"와같은 식으로 더하지만 이렇게 하면 메모리가 낭비 될수도 있다.
StringBuilder는 동적으로 메모리가 할당되어 메모리를 더욱 효율적으로 사용할 수 있다.
문자열끼리 더할때 아래 코드처럼 사용한다.
var c : StringBuilder = StringBuilder() // String Builder 선언, c에는 아무것도 들어있지않다.
c.append("Hello") // 변수 c에 append 메서드를 이용해 Hello를 추가 -> 현재 c = "Hello"
c.append("_World") // 변수 c에 append 메서드를 이용해 _World를 추가 -> 현재 c = "Hello_World"
println(c)
코틀린은 자바에는 없는 ===연산자를 지원한다. 참조 비교를 위해서 === 연산자를 사용하면 된다. 즉, 자바의 주소 값 비교인 ==와 코틀린의 ===가 동일한 역할을 한다.
'프로그래밍 > Kotlin' 카테고리의 다른 글
안드로이드 액티비티 전환 (0) | 2021.06.24 |
---|---|
코틀린 코딩 컨벤션 (0) | 2021.06.22 |
코틀린 에러 모음 (0) | 2021.06.09 |
코틀린 문법 연습 (0) | 2021.06.09 |
[Kotlin](Scope Function) let, with, run, apply, also 차이 및 use (0) | 2021.06.07 |
댓글