• “==” 与 equals


      这几天做过一些java的面试题,其中涉及的“==” 与 equals之间的问题甚是烦恼,然后只好自己写代码测试,得到一些有用的结论,希望对大家有用

    ==对于基本数据类型,判断值是否相等;对于类类型,判断地址是否相同

    运算符”==”与equals比较对象的区别是什么?
    == :
    基本类型:比较的是值
    引用类型:比较的是地址值
    equals :
    基本类型:比较的是值本身
    引用类型:在不重写的情况下比较的是地址值+@+哈希值

    10    Test t = new Test();
    11 Test s = new Test();
    12 System.out.println(t == s);//false 比较地址
    13 System.out.println(t.equals(s));//false 没有被重写的equals,比较地址
    14 String c = new String();
    15 String d = new String();
    16 
    17 System.out.println(c == d);//false 比较地址
    18 System.out.println(c.equals(d));//true String类的equals被重写,比较值
    equals只重写了String对象的比较值,其他对象比较的是地址
    
    String str1 = "abc";
    String str2 = "abc";
    String str3 = new String("abc");
    System.out.println(str1 == str2);//true 都指向方法区中常量池的值"abc"
    System.out.println(str2 == str3);//false str3在堆内存中存放"abc","abc"取自常量池

    11、以下返回true的表达式有__ac_____。
    A. "briup" == "briup"
    B. "briup" = "briup"
    C. "briup".equals(new String("briup"))
    D. "briup" == new String("briup")

    equals重写:(eclipse自带重写功能,以下不理解也可以)

    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
            Test other = (Test) obj;
        if (age != other.age)
           return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
            return true;
    }    
  • 相关阅读:
    SASS搭建流程
    Javascript模块化编程(一)
    Javascript模块化编程发展历史
    jQuery文档处理
    jQuery事件对象
    软件开发中的11个系统思维定律
    Silverlight实例教程 理解Navigation导航框架Frame类
    eclipse自动关闭的原因
    你应该知道的15个Silverlight诀窍
    Eclipse 启动不起来异常:JVM terminated. Exit code=1
  • 原文地址:https://www.cnblogs.com/wsyblog/p/7294334.html
Copyright © 2020-2023  润新知