关于java中==;!=;equal()的一点点思考

来源:互联网 发布:电脑格式化后数据恢复 编辑:程序博客网 时间:2024/06/15 13:36

首先看下面四段代码:

 

package tij103;

public class Equivalence {
    public static void main(String[] args){
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
    }

}
结果是false

         true

 

/**************************************************/

public class EqualsMethod {
    public static void main(String[] args){
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1.equals(n2));
    }
}

结果是true

 

/****************************************************/

package TIJ104;
class Value{
    int i;
}
public class EqualsMethod2 {
    public static void main(String[] args){
        Value v1 = new Value();
        Value v2 = new Value();
        v1.i=100;
            v2.i=100;
        System.out.println(v1.equals(v2));
    }
}
结果是false

 

 

 

/************************************************/

 

class Value{
    int i;
}
public class EqualsMethod2 {
    public static void main(String[] args){
        Value v1 = new Value();
        Value v2 = new Value();
        v1.i=100;
            v2.i=100;
        System.out.println(v1.i==v2.i);
    }
}

结果是true

 

/*************************************************/

      这几段代码把我彻底弄糊涂了,对着本英文书研究半天,得出来原因是:==和!=比较的是对象的引用(可能翻译得有点烂呵。。),equal( )比较的是对象(除了primitive),所以,定义了新的class,则在比较的时候用==和!=;如果没有,则需用equal()函数来比较。

      看似很难的问题,写出来就容易理解了。

      关于上周说的那个importstatic net.mindview.util.Print.*报错的问题,实际上是因为TIJ这本书需要下载一个文档,而在这个文档rar里有很多的.java文件需要拿来直接用,其中就有一个net.java。而不是IDE的问题,至于怎么导到eclipse里,虽然问了学长,老实说,我依旧没有弄成功。还请各位大虾们拔刀相助。