• 动手动脑


     1  
     2 public class StringEquals {
     3 
     4     
     5 /**
     6      * @param args the command line arguments
     7      */
     8     
     9     public static void main(String[] args) {
    10         
    11         String s1=new String("Hello");
    12         
    13         String s2=new String("Hello");
    14 
    15         
    16         System.out.println(s1==s2);
    17         
    18         System.out.println(s1.equals(s2));
    19 
    20         
    21         String s3="Hello";
    22         
    23         String s4="Hello";
    24 
    25           
    26         System.out.println(s3==s4);
    27         
    28         System.out.println(s3.equals(s4));
    29         
    30     
    31     }
    32 
    33 
    34 }

    我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。虽然有时候Object的equals()方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候Object的equals()方法就不可以了,实际上JDK中,String、Math等封装类都对equals()方法进行了重写。

     equals 方法在非空对象引用上实现相等关系:

         1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

         2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

          3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

          4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

         5、 对于任何非空引用值 x,x.equals(null) 都应返回 false。  

  • 相关阅读:
    图片编辑网站
    mysql导出表的字段及相关属性
    SpringBoot使用注解实现事务管理
    Linux命令
    linux上部署SpringBoot项目及遇到的问题
    使用配置文件产生随机数
    UUID生成随机字符串
    第二十二节 web服务器里集成了解析动态请求的功能
    第二十节 多进程面对对象web服务器
    第二十节 tcp_ip协议
  • 原文地址:https://www.cnblogs.com/tiantain1015/p/4906317.html
Copyright © 2020-2023  润新知