新手求解答。
1. public class equivalence {public static void main (string 【】args){
Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.printIn(n1.equals(n2);}
} //true
2.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.printIn(n1.equals(n2);}
}//false
为什么第一个是T到了第二个就变成F了呢?求大佬解答。 你环境 步骤都没写怎么让人解答? 这是java么?
java里面非基本数据类型,使用==比较的是地址;
equals默认比较的是地址,重写过equals方法的类比较的是内容。表问我哪些类重写过,自己去看jdk的源代码;
value类是自定义类,并且没有重写过equals方法,所以会调用Object.equals方法
public boolean equals(Object obj) {
return (this == obj);
}
顺便说一句,贴代码之前自己编译一下,这种代码目测就是编译通不过的。。
页:
[1]