当前位置: 技术问答>java相关
equals 和句柄??
来源: 互联网 发布时间:2015-02-17
本文导语: 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; System.out.println(v1.equals(v2)); 请问:为何打印结...
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;
System.out.println(v1.equals(v2));
请问:为何打印结果是“false”。
若改为
System.out.println(v1== v2);
结果又为???
句柄是什么?
int i;
}
public class EqualsMethod2 {
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));
请问:为何打印结果是“false”。
若改为
System.out.println(v1== v2);
结果又为???
句柄是什么?
|
句柄相当于指针。存的是对象的地址。
v1和v2是两个不同的对象,拥有不同的地址。
v1.equals(v2) 当然是false
System.out.println(v1== v2)也是false
v1和v2是两个不同的对象,拥有不同的地址。
v1.equals(v2) 当然是false
System.out.println(v1== v2)也是false
|
equals方法返回的是boolean值,
功能是对比对象的地址,通过重载方法
当然也可以达到对比某个值的要求:
class Value {
int i;
public boolean equals(Object o){
return (((Value)o).i==i);
}
}
或者分行来写:
public boolean equals(Object o){
int j=0;
Value v = (Value)o;
j=v.i;
if(i==j) return true;
return false;
}
功能是对比对象的地址,通过重载方法
当然也可以达到对比某个值的要求:
class Value {
int i;
public boolean equals(Object o){
return (((Value)o).i==i);
}
}
或者分行来写:
public boolean equals(Object o){
int j=0;
Value v = (Value)o;
j=v.i;
if(i==j) return true;
return false;
}
|
This is because the default behavior of equals( ) is to compare references. So unless you override equals( ) in your new class you won’t get the desired behavior.
Most of the Java library classes implement equals( ) so that it compares the contents of objects instead of their references.
明白吗?类Integer 内部已经override了equals方法了,所以就是你看到的这样子.
Most of the Java library classes implement equals( ) so that it compares the contents of objects instead of their references.
明白吗?类Integer 内部已经override了equals方法了,所以就是你看到的这样子.
|
这些问题在《Thinking in Java》书中有详细的介绍,若要靠SCJP,最好还是将这本书通读几遍!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。