首先給大家看一段代碼
package javaapptest;
public class JavaAppTest {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = str2 ;
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str2==str3);
}
}
運行結果為: false
false
true
下面給大家說一下為什么前兩個比較會為false,我們這里用 “==”符號不會比較字符串的內容 而是比較字符串地址里面的值,下面上一張圖給大家看就明白了;

如果把賦值代碼改成下面代碼
String str1 = "Hello";
String str2 = "Hello";
String str3 = "Hello"
它會把str1,str2,str3都去指向一個Hello,不會再開辟新的空間

如果要比較字符串里面的內容我們可以使用equals來比較字符串的內容,如下代碼
package javaapptest;
public class JavaAppTest {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = str2 ;
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
System.out.println(str2==str3);
}
}
就寫到這里了,希望能幫到你。
