在Java語言中,=和==都是常見的運算符。但是它們的作用完全不同。
=是賦值運算符,用于將右側的值賦給左側的變量。例如:
int a = 10; //將10賦給變量a String str = "hello"; //將字符串"hello"賦給變量str
而==是比較運算符,用于比較兩個值是否相等。例如:
int a = 10; if(a == 10) { //判斷a是否等于10,如果成立執行下面的代碼 System.out.println("a等于10"); } String str1 = "hello"; String str2 = "hello"; if(str1 == str2) { //判斷兩個字符串是否相等,如果成立執行下面的代碼 System.out.println("str1和str2相等"); }
需要注意的是,==比較的是兩個值的內容是否相等,而不是它們的地址是否相等。因此,對于基本數據類型,比較的是它們的數值是否相等;對于引用類型,比較的是它們所指向的對象是否相同。
例如:
String str1 = new String("hello"); String str2 = new String("hello"); if(str1 == str2) { System.out.println("str1和str2的地址相等"); } else { System.out.println("str1和str2的地址不相等"); } if(str1.equals(str2)) { System.out.println("str1和str2的內容相等"); } else { System.out.println("str1和str2的內容不相等"); }
以上代碼輸出的結果是:
str1和str2的地址不相等 str1和str2的內容相等
因為str1和str2雖然內容相同,但是它們是分別指向兩個不同的字符串對象的。