首页 / JAVA / java中的equals方法
java中的equals方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java中的equals方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1874字,纯文字阅读大概需要3分钟。
内容图文
首先我们写一段代码比较两个对象
public class Test {
public static void main(String[] args) {
String name2 = new String("tom"); //创建name1赋值tom
String name2 = new String("tom"); //创建name2赋值tom
System.out.println(name1==name2); //用“==”判断两个对象是否相同
System.out.println(name1.equals(name2));//用equals方法判断是否相同
}
}
我们都知道,“==”来判断两个引用类型的对象时,是直接判断对象的地址的,也就是说,不同的对象用“==”来判断,一定是不相同的,但equals就不一样了,这里的输出为
显然equals方法并不只是看地址,那么其到底是如何执行的呢
public boolean equals(Object anObject) {
if (this == anObject) { //“==”判断地址是否相同
return true;
}
if (anObject instanceof String) { //如果比较对象为String类型
String anotherString = (String)anObject;//因为anObject参数指向name2对象
//name2为String类型对象,所以可以下转型
int n = value.length;
//因为value是全局变量,实质是this.value.length
//name1 调用 equals,this即为name1,name1就是全局变量,this.value.length就是name1的字符有多少个
if (n == anotherString.value.length) {
//anotherString就是指向name2,anotherString.value.length代表name2有多少个字符。
//两个字符串相同,则长度一定相同,所以n == anotherString.value.length非常重要
char v1[] = value; //由name1字符组成的数组
char v2[] = anotherString.value;//由name2字符组成的数组
int i = 0;
while (n-- != 0) { //逐个字符比对
if (v1[i] != v2[i]) //只要有一个比对失败则两个字符串一定不相同
return false;
i++;
//这一段代码其实是创建了一个与比较对象一模一样的字符串,并且逐个字符与被比较对
//象进行对比,如果全部相同,则两个对象相同,否则不同
}
return true;
}
}
return false;
}
通过分析我们可以发现,equals方法中其实就使用了“==”首先判断地址,在地址不同的情况下不会立马认为两个对象不一样,而是在对象为字符串类型的情况下将它们的字符逐个比对,因此我们在判断几句语句是否相同时可以使用equals方法,避免“==”判断带来的误差。
内容总结
以上是互联网集市为您收集整理的java中的equals方法全部内容,希望文章能够帮你解决java中的equals方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。