zoukankan      html  css  js  c++  java
  • 动手动脑

     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。  

  • 相关阅读:
    341. Flatten Nested List Iterator
    667. Beautiful Arrangement II
    953. Verifying an Alien Dictionary
    1704. Determine if String Halves Are Alike
    MySQL数据库的数据类型详解【转】
    Dart之数组(List)的相关方法总结【转】
    Flutter解决点击非输入框时关闭键盘问题及TextFormField焦点切换问题【转】
    Flutter Switch开关【转】
    Image Picker
    Flutter按钮添加背景图片及文字【转】
  • 原文地址:https://www.cnblogs.com/tiantain1015/p/4906317.html
Copyright © 2011-2022 走看看