在Java編程中,有兩個非常常見的操作符,即等號=和恒等==。這兩個操作符的作用雖然相似,但是在使用中卻有很大的差別。
// =的用法 int a = 10; // a的值現在為10 String str1 = "Hello"; String str2 = " World!"; String str3 = str1 + str2; // str3的值現在為"Hello World!"
在上面的例子中,我們使用了等號=來給變量賦值,或者將對象的引用賦值給其他變量。這個操作在Java程序中非常常見,也很容易理解。
// ==的用法 int a = 10; int b = 10; boolean isEqual1 = (a == b); // isEqual1的值為true String str1 = "Hello World!"; String str2 = "Hello World!"; boolean isEqual2 = (str1 == str2); // isEqual2的值為true String str3 = new String("Hello World!"); String str4 = new String("Hello World!"); boolean isEqual3 = (str3 == str4); // isEqual3的值為false
但是,當我們使用恒等==操作符時,事情就有點不同了。恒等==操作符用來判斷兩個對象的引用是否相等,在這里,對象的引用指的是虛擬機在內存中分配的地址。如果兩個引用指向同一個地址,那么恒等==操作符返回true,否則返回false。
需要注意的是,如果我們使用相等=操作符,也可以比較兩個對象的值是否相等,如字符串的拼接例子中。但是在使用恒等==操作符時,就只能比較兩個對象的引用是否相等。