首先给大家看一段代码
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); } }
就写到这里了,希望能帮到你。