你所调用的equals()方法实际上是Value的父类Object中的方法,只有在这两个句柄指向同一个对象时,才返回true。v1和v2指向两个对象,所以返回false。
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).
你可以重载equals()方法,这样就可以返回true了:
class Value {
int i;
boolean equals(Value v){
if(v.i == this.i) return true;
else return false;
}
}
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).
你可以重载equals()方法,这样就可以返回true了:
class Value {
int i;
boolean equals(Value v){
if(v.i == this.i) return true;
else return false;
}
}
Object的equals是这样写的:
return this == obj;
就是判断引用是否相等,所以 v1和v2的引用当然不相等了,false
public static void main(String[] args) {
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1.equals(n2));
}
} ///:~这个又输出什么呢?
谁可以说说他们两者之间的区别呢?
------------------
====================================
没有风的日子,却是我毕业的时候??
湛江风好大,毕业之后离开了湛江,
怀念那----风*************************************
==运算符也进行等值比较。也就是说,对于任何引用值X和Y,当且仅当X和Y指向同一对象时, X==Y返回真。
当两个分离的对象的内容和类型相配的话,String,Date,File类和所有其它override equals()的包装类(Integer,Double,等等)将返回真。你的类没有包装equals(),因此依然是两个引用是否指向同一对象
分有的就是:)
------------------
====================================
没有风的日子,却是我毕业的时候??
湛江风好大,毕业之后离开了湛江,
怀念那----风*************************************
if(str == null)....这样也可以判断,null是对象吗?
其实 == 两边应该是什么类型呢,equals比较是对象,那么 == 呢?是值还是对象,还是其他的呢?我知道字符串比较就一定要用equals不能用 == ,那么如果是两个整型应该用什么比较呢??
------------------
====================================
没有风的日子,却是我毕业的时候??
湛江风好大,毕业之后离开了湛江,
怀念那----风*************************************
但很多类对这个equals()做了重载.当两个分离的对象的内容和类型相配的话,String,Date,File类和所有其它override equals()的包装类(Integer,Double,等等)将返回真。
这时,equals()就和==不一样了 try...
class Value {
int i;
}public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i= 100;
Integer j1,j2;
j1=new Integer(101);
j2=new Integer(101);
System.out.println(v1. equals(v2));
System.out.println(j1. equals(j2));
System.out.println(j1==j2);
}
}
if(bl == false)...这是什么比较呢??多谢7(Nomad)的解答!
------------------
====================================
没有风的日子,却是我毕业的时候??
湛江风好大,毕业之后离开了湛江,
怀念那----风*************************************
如果我有说错之处,请指正,大家共同学习 : )
------------------
====================================
没有风的日子,却是我毕业的时候??
湛江风好大,毕业之后离开了湛江,
怀念那----风*************************************