[Kotlin] 코틀린 동등성 연산

이승우·2023년 5월 6일
1

코틀린

코틀린에서는 == 연산자가 기본이다. Primitive Type(원시 타입)을 비교할 때는 피연산자의 값이 같은지 비교한다. 하지만, Reference Type(참조 타입)을 비교할 때는 다르다.

== 는 내부적으로 equals를 호출한다. 따라서 참조 타입인 2개의 String을 == 연산으로 비교하면 주소값이 아닌 값(동등성) 비교를 한다.

val a : String = "hi"
val b : String = "hi"

println(a == b) // true

그렇다면, 참조 타입의 주소값을 비교하고 싶다면 어떻게 하면 될까?

코틀린에서는 자바에서 없는 === 이라는 연산자를 지원한다. 참조 비교를 위해서 === 연산자를 사용하면 주소값을 비교할 수 있다.

자바

자바에서는 Primitive Type(원시 타입)을 비교하기 위해 == 를 사용한다. == 는 두 피연산자의 값이 같은지를 비교한다. 즉, 동등성 비교를 한다.

int a = 1;
int b = 2;

System.out.println(a == b); // false

한편, 참조 타입인 두 피연산자 사이에 == 를 사용할 경우, 주소값을 비교하게 된다. String의 경우, Reference Type이기 때문에 내용이 같더라도 주소값이 다를 경우 false를 반환하게 된다.

String a = "hi";
String b = "hi";

System.out.println(a == b); // false

두 참조 타입(객체)의 동등성을 확인하기 위해서는 equals를 호출해야 한다.

String a = "hi";
String b = "hi";

System.out.println(a.equals(b)); // true

Ref

profile
Android Developer

0개의 댓글