zoukankan      html  css  js  c++  java
  • “==” 与 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;
    }    
  • 相关阅读:
    零位扩展和符号位扩展
    JAVA虚拟机20基于栈的解释器执行过程示例
    JAVA虚拟机16方法的动态调用
    JAVA虚拟机17栈帧(局部变量表操作数栈动态连接返回地址)
    JAVA虚拟机21JAVA内存模型
    JAVA虚拟机18方法调用
    符号扩展和零位扩展
    JAVA虚拟机22原子性、可见性与有序性、先行发生原则
    MYSQL各版本下载,包括linux和windows
    【转】Android模拟器怎么配置网络连通
  • 原文地址:https://www.cnblogs.com/wsyblog/p/7294334.html
Copyright © 2011-2022 走看看