- 참조 타입에서
==
, !=
연산은 같은 객체인지를 비교한다. 즉 메모리 번지가 같은지를 비교한다.
- 값을 비교하기 위해서는
Object.equals
API를 이용한다
jshell> String var1 = "appkr";
strVar1 ==> "appkr"
jshell> String var2 = "appkr";
strVar2 ==> "appkr"
jshell> String var3 = new String("appkr");
strVar3 ==> "appkr"
jshell> var1 == var2;
$4 ==> true
jshell> var1 == var3;
$5 ==> false
jshell> var1.equals(var3);
$6 ==> true
var1
은 Heap 메모리 번지 (a)를 참조
var2
는 같은 리터럴이므로 Heap 메모리 번지 (a)를 참조
var3
는 new 키워드를 써서 객체를 직접 생성했으므로 Heap 메모리 번지 (b)를 참조
+----+-----+
|var1| (a) |
+----+-----+
|var2| (a) |
+----+-----+
|var3| (b) |
+----+-----+
+-----+-------+
| (a) | appkr |
+-----+-------+
| (b) | appkr |
+-----+-------+
Reference type