使用==比較兩個primitive或判別兩個reference是否參照同一個物件
當使用==比較兩個primitive, 我們不在意兩個型別是否一樣, 只在意兩個位元組合是否相等,
e.g.
int a = 3;
byte b = 3;
if (a == b) { // true }
當使用==比較兩個reference是否參考同一個物件, 我們不在意兩個物件上意義是否相等, 只在意兩個reference是否參考、指向同一個物件,
e.g.
Foo a = new Foo();
Foo b = new Foo(); --> 又和記憶體要一個新空間, 所以和 a 要的原本的記憶體空間是不同的, 也因此是新的物件
Foo c = a;
if (a == b) { // false }
if (a == c) { // true }
if (b == c) { // false }
p.s. 真的要看兩個物件意義上是否相等, 用equals()看。
e.g.
int a = 3;
byte b = 3;
if (a == b) { // true }
當使用==比較兩個reference是否參考同一個物件, 我們不在意兩個物件上意義是否相等, 只在意兩個reference是否參考、指向同一個物件,
e.g.
Foo a = new Foo();
Foo b = new Foo(); --> 又和記憶體要一個新空間, 所以和 a 要的原本的記憶體空間是不同的, 也因此是新的物件
Foo c = a;
if (a == b) { // false }
if (a == c) { // true }
if (b == c) { // false }
p.s. 真的要看兩個物件意義上是否相等, 用equals()看。
留言
張貼留言