一、"==" 与 equals
下边这段代码应该都看过或者写过:
String str1 = "test";
String str2 = "test";
String str3 = new String("test");
String str4 = new String("test");
System.out.println(str1 == str2);//true
System.out.println(str1.equals(str2));//true
System.out.println(str3 == str4);//false
System.out.println(str3.equals(str4));//true
由于 "==" 进行值比较,则在str1与str2比较为true,而在new String 的str3与str4为false,虽然equals进行的是引用比较,但String中将equals方法重写,来达到进行比较字符串中的值比较。还有 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
————————————————
版权声明:本文为CSDN博主「West Money」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/http_red/article/details/108583174和
https://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html