n1==n2和n1 != n2比较的是两个对象的实际地址
你想要的效果应该是调用方法equals
你想要的效果应该是调用方法equals
解决方案 »
- java格式化输出问题
- 麻烦大家看看,这个使用focusLost方法监听事件时焦点混乱执行的原因是什么?
- Swing中多个组件排列的问题
- JAVA做的企业级及时通讯工具以及KM软件,大家看看
- 100分求解一个加密问题,不知道是用什么编码的,解决给分!!!谢谢!!!
- 急!关于文件路径的问题,在线等
- java.lang.Object的equals, toString 和 hashCode三个方法和 RemoteObject的这三个方法有什么不同;为什么会有这种不同
- 求购jbuilder 7 for linux下的安装方案
- 明天我去应聘----大家帮我出出注意
- 小问题。。。
- windows下的ldap服务端软件有那些?
- 關於查看類的定义
public static void main(String[] args){
Integer n1=new Integer(47);
Integer n2=nwe Integer(47);
System.out.println(n1==n2);
System.out.println(n1!=n2);
}
}
为啥比较结果是 true和false 但实际答案是现是false 再是true。我这样理解2个Integer的对象都相同为啥会出现不同结果。
楼主,你到底认为应该是什么答案呢?
你运行的结果又是什么答案呢?n1和n2都是对象
== 操作符,对于对象来说,只比较对象的引用,即指针的地址值,对于两个不同的对象来说,当然是不相等的另外第二段函数应该结果是false
所以比较Interger的实际值47,就要用equals, 如果你要实现的类需要做比较,则你的类要实现(overload,重载)equals方法。
== 操作符,对于对象来说,只比较对象的引用,即指针的地址值,对于两个不同的对象来说,当然是不相等的
这句话还是不是很理解 对象的引用难道就是对象的所指的值吗?
{
public static void main(String args[])
{
int a=10;
System.out.println("a="+a);
int b=a/2;
System.out.println("a="+a);
StringBuffer sa=new StringBuffer("sa");
System.out.println("sa="+sa);
sa.append("append");
System.out.println("sa="+sa);
}
}体会一下吧,你就知道java中的引用是怎么回事了
class Value{
int i;
}
public class Equivalence{
public static void main(String[] args){
Value v1=new Value();
Value v2=new Value();
v1.i=v2.i=100;
System.out.println(v1.equals(v2));//第九行
System.out.println(v1==v2);//第十行
}
}
执行结果是:false、false
首先你要知道:“==”比较的是引用,你可以把他理解为地址的比较;equals比较的是对象。好了,现在看上面的程序,第十行输出肯定是false,因为v1和v2两个对象的地址不可能相等,那么第九行为什么也是false呢,他不是比较对象v1和v2吗?这就涉及到深比较和浅比较的问题了,没错,v1.i==v2.i,那又能代表什么,那只不过是v1和v2深层次的某个成员变量的值相等罢了。象string类型的equals函数是通过重载object的equals函数的,他应当别论,在java中有许多这样的类型重载equals函数。如果你非要第九行输出结果为true,那么你重载equals函数,让他深入到value的更深层去比较。
equals 比较的是内容,区分大小写
public boolean equals(Object obj)Determines whether or not two points are equal. Two instances of Point2D are equal if the values of their x and y member fields, representing their position in the coordinate space, are the same. Overrides:
equals in class Point2D
Parameters:
obj - an object to be compared with this Point2D
Returns:
true if the object to be compared is an instance of Point2D and has the same values; false otherwise.