Java String类的equals源代码研究

转自:http://blog.sina.com.cn/s/blog_79333b2c0100xd34.html

String类中的equals()方法:

public boolean equals(Object anObject)
{
      //如果是同一个对象
       if (this == anObject)
       {
           return true;
       }
       //如果传递进来的参数是String类的实例
       if (anObject instanceof String)
       {
           String anotherString = (String)anObject;
           int n = count;//字符串长度
           if (n == anotherString.count) //如果长度相等就进行比较
           {
               char v1[] = value;//取每一个位置的字符
               char v2[] = anotherString.value;
               int i = offset;
               int j = anotherString.offset;
               while (n-- != 0) //对于每一位置逐一比较
               {
                   if (v1[i++] != v2[j++])
                       return false;
                }
               return true;
           }
       }
       return false;
}

对于object类的equals()方法,判断调用该方法的对象与要比较的对象是不是同一个对象(判断地址),而String类中的equals()方法,则判断当前字符串与传递进来的字符串的内容是否一致。

 

object类中的equals()方法:

public boolean equals(Object obj)

{
  //调用equal的对象的地址和参数对象的地址是否相等
       return (this == obj);
}

 

另外,对于java中的其他类,如果没有重写object类中的equals()方法,我们就可以认为调用该类的equals()方法就是判断这两个类是不是同一个类。只要是使用new类名(),这种形式生成的类(除单例外),我们都可以认为是不同的类(地址不同)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值