51Testing软件测试论坛

标题: 新手求解答。 [打印本页]

作者: 193高阳    时间: 2018-9-20 18:12
标题: 新手求解答。
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
你环境 步骤都没写怎么让人解答?
作者: puchonghui    时间: 2018-9-21 12:09
这是java么?

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

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

顺便说一句,贴代码之前自己编译一下,这种代码目测就是编译通不过的。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2