193高阳 发表于 2018-9-20 18:12:25

新手求解答。

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了呢?求大佬解答。

lsekfe 发表于 2018-9-21 11:25:03

你环境 步骤都没写怎么让人解答?

puchonghui 发表于 2018-9-21 12:09:52

这是java么?

java里面非基本数据类型,使用==比较的是地址;
equals默认比较的是地址,重写过equals方法的类比较的是内容。表问我哪些类重写过,自己去看jdk的源代码;

value类是自定义类,并且没有重写过equals方法,所以会调用Object.equals方法
public boolean equals(Object obj) {
      return (this == obj);
    }

顺便说一句,贴代码之前自己编译一下,这种代码目测就是编译通不过的。。
页: [1]
查看完整版本: 新手求解答。