在学习,面试中,常常会出现 == 与 equals有什么区别。经过总结,主要区别如下:

== :比较字符窜引用的地址是否相同。

equals:比较字符窜的内容是否相同。

比如:


public class StringComparation{


String s1 = "abc";

String s2 = "abc";

String s3 = new String("abc");


System.out.println(s1 == s2); ---true

System.out.println(s1 == s3); ---false


System.out.println(s2 == s3); ---false

}

之所以出现原因:

简单的说:s1和s2的引用地址一样,然后,s1,s2与s3的引用地址不一样。

具体说是:

java在内存中,创建一个String的池,用于存放所有的String。当你对字符窜直接赋值,系统会在String的池寻找该值是否存在。如存在直接使用。但是,当你用new创建字符窜,则永远创建新的字符窜。