实验代码
package ketang; public class StringEquals { /** * @param args the command line arguments */ public static void main(String[] args) { String s1=new String("Hello"); String s2=new String("Hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); String s3="Hello"; String s4="Hello"; System.out.println(s3==s4); System.out.println(s3.equals(s4)); }
实验截图
总结
可以看到在第一个比较s1,s2时是false,第二个用equal()进行比较后是true,而s3,s4比较时,不管是直接比较还是用equal比较都是true。我们可以发现s1,s2是用new String来创建的,而s3,s4是是直接String=“字符串”来创建的。string其实是个类,用new时开辟了新空间,s1,s2对象比较时,两个内存位置不同,所以是false,而s3,s4比较时,s3,s4是用的同一个地方的“hello”故比较时是true。用equal时,只是比较其中的内容,故都是true。