首先給大家看一段代碼
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); } }
就寫到這里了,希望能幫到你。