在学习,面试中,常常会出现 == 与 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创建字符窜,则永远创建新的字符窜。