==和equals的区别?
解决方案 »
- java文件运行出异常,但将源代码换到另一个新建的文件中却正常
- 正则表达式 CANON_EQ的具体意思
- 文件编码为utf8的编译问题?
- jbuilder 9新建一个项目报package ld.gui does not exist 错但这个ld.gui源程在程序中是有的。
- 怎样编写象股市分析软件相仿的软件?
- 如何通过IP地址获得远程计算机的系统时间
- 那里有WINHELP格式的JAVA Document下载?
- 一个关于swing的超简单问题,解决问题就马上给分
- 如何在用户界面上判断输入的是否是数字?谢谢
- 请教TOMCAT的中文问题~!
- socket的问题,为什么服务器端没有发消息,客户端就不能给客户端发消息呢?
- 如何把画的线去掉
String str2 = "ab";
String str3 = "cd";
String str4 = str2 + str3;
这里的str4的值虽然和str1相同
但它是重新在堆栈里开辟了块空间,已经是一个新的对象,和str1指向的不同了。。
str1.equals(str4) 结果为 true
str1 == str4 结果为false不知道这讲是不是对的。。
1.
在Object中是这样定义equals方法的,
当且仅当,两个比较的对像是同一个时结果才为true,这和==是一样的
例如:A a=new A();
A b=new A();
A c=a;
则: a.equals(b)//false
c.equals(a)//true
2.在java中有很多类都重写了equals方法,比如说最常见的String类,
它的equals方法就只看两个String的内容是不是一样,如果一样就返回true
例如:String a=new String("test");
String b=new String("test");
a.equals(b)//true
a==b//false
3.也就是说==对于比较两个对象来说,只有它们完全是一个对象时才返回true
4.当你自己写一个类时class Test在你没有自己写equals方法时,它会自动继承Object类的
equals方法,所以就会有下面这种情况了,
Test a=new Test();
Test b=new Test();
Test c=a;
a.equals(b);//false
a==b //false
a.equals(c);//true
a==c //true
String a="aadf"; String b="aadf";地址不现equals,看类的实现,对于String比较字符串。
==相当于比较地址,String a="aadf";String b=a; 地址相同,
String a="aadf"; String b="aadf";地址也相同,是因为String在JVM上的特殊处理
String a="aadf"; String b = new String("aadf");地址不同
equals,看类的实现,对于String比较字符串。