企业融资规划师证书,外贸网站seo推广教程,网站访问找不到域名怎么回事,做一个微信公众号商城多少钱equals方法
我们知道每个类其基类都是Object#xff0c;Object默认的equals方式是:
public boolean equals(Object obj) {if (this obj) {//先进行地址比较return true;}上面可以看出Object的equals方法比较两个对象的地址是否相等。
接着我们来说下String的equals方法实现…equals方法
我们知道每个类其基类都是ObjectObject默认的equals方式是:
public boolean equals(Object obj) {if (this obj) {//先进行地址比较return true;}上面可以看出Object的equals方法比较两个对象的地址是否相等。
接着我们来说下String的equals方法实现源码
public boolean equals(Object anObject){/** 首先判断两个对象地址是否相等*/if(this anObject){return true;}/** 其次判断对象是否为String类的实例对象*/if(anObject instanceof String){//强制转换为String类型String anotherString (String)anObject;//获取调用String对象的字符串长度int n value.length;/**如果长度相同接着判断字符串是否相同*/if(n anotherString.value.length){//String转换成char数组char v1[] value;char v2[] anotherString.value;int i 0;//遍历每个字符判断是否相等while(n-- ! 0){if(v1[i]) ! v2[i])return false;i;}return true;}return false;}
}
从源码中我们可以看出String的equals方法判断对象的值或者是地址是否相等。
接着我们再来看StringBuffer的equals
StringBuffer继承自AbstractStringBuilder类和实现的Serializable、CharSequence接口都没有equals方法但是StringBuffer的equals从何而来java所有类都是Object子类其用来比较两个对象的地址是否相同不能用于字符串内容比较操作
总结
因此我们使用equals方法需要根据应用场景做选择