• object类的equals方法简介 & String类重写equals方法


    object类中equals方法源码如下所示

    1 public boolean equals(Object obj)  
    2 {  
    3     return this == obj;  
    4 }  

    Object中的equals方法是直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对

    象,则返回true,如果this和obj指向的不是同一块内存,则返回false,注意:即便是内容完全相等的两块不同的内存对象,也返回false。

    如果是同一块内存,则object中的equals方法返回true,如果是不同的内存,则返回false。

    如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equal方法

    【以上内容转载自】http://blog.csdn.net/rain722/article/details/52425285

    String类重写object中的equals方法

     1  /**
     2      * Compares this string to the specified object.  The result is {@code
     3      * true} if and only if the argument is not {@code null} and is a {@code
     4      * String} object that represents the same sequence of characters as this
     5      * object.
     6      *
     7      * @param  anObject
     8      *         The object to compare this {@code String} against
     9      *
    10      * @return  {@code true} if the given object represents a {@code String}
    11      *          equivalent to this string, {@code false} otherwise
    12      *
    13      * @see  #compareTo(String)
    14      * @see  #equalsIgnoreCase(String)
    15      */
    16     public boolean equals(Object anObject) {
    17         if (this == anObject) {
    18             return true;
    19         }
    20         if (anObject instanceof String) {
    21             String anotherString = (String)anObject;
    22             int n = value.length;
    23             if (n == anotherString.value.length) {
    24                 char v1[] = value;
    25                 char v2[] = anotherString.value;
    26                 int i = 0;
    27                 while (n-- != 0) {
    28                     if (v1[i] != v2[i])
    29                         return false;
    30                     i++;
    31                 }
    32                 return true;
    33             }
    34         }
    35         return false;
    36     }

    判断条件:

    如果两个对象具有相同的引用,则返回true,也就是Object类中的方法

    如果传入的对象不属于String类,则返回false

    如果传入的对象属于String类,则和原对象的长度进行比较,长度不相等则返回false,如果相等,则逐位比较它们的内容是否相同,都相同则返回true,否则返回false

    注意:这个方法没有判断过两个对象均为null的情况,也就是说:

    1  public static void main(String args[]){
    2         String a = null;
    3         String b = null;
    4         System.out.println(a.equals(b));
    5     }

    运行这段代码,会出现空指针异常,不允许调用equals方法的对象(这里是a)为null

  • 相关阅读:
    第38周星期六小结
    第38周星期日小结
    第39周星期三熟悉java项目第一天小结
    第39周星期一今天开始用扇贝记单词
    第38周星期四电话会议忙碌的一天
    第38周星期二
    第38周星期三熟悉工程环境
    PHP实现图片的等比缩放和Logo水印功能示例
    微信授权登录微信公众号和PC端网站
    PHP实现购物车的思路和源码分析
  • 原文地址:https://www.cnblogs.com/fay0926/p/8042255.html
Copyright © 2020-2023  润新知