使用==比較兩個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()看。




留言

這個網誌中的熱門文章

如何在macbook pro上安裝Eclipse、tomcat、mariadb、MySQLWorkbench?

求1000和495的最大公因數

如何在mac版的Eclipse workspace中找到.metadata?