==操作符比较的是引用地址是否相等,equals()函数比较的字符串的值是否相等
示例1:
String s1="Hello";
String s2="Hello";
if(s1==s2)
System.out.println("s1 == s2");
if(s1.equals(s2))
System.out.println("s1 equals s2");
输出结果:s1 == s2
s1 equals s2分析:s1和s2都是引用String常量池的同一个“Hello"
示例2:
String s1="Hello";
String s2=new String("Hello");
if(s1==s2)
System.out.println("s1 == s2");
if(s1.equals(s2))
System.out.println("s1 equals s2");
输出结果:s1 equals s2
分析:s1是指向String常量池的引用,s2是指向堆内存的引用。
示例3:
String s1=new String("Hello");
String s2=new String("Hello");
if(s1==s2)
System.out.println("s1 == s2");
if(s1.equals(s2))
System.out.println("s1 equals s2");
输出结果:s1 equals s2
分析:s1 ,s2指向堆内存的不同String对象