摘要:今天就来谈谈和的作用和区别。对于基础类型的作用就是判断值是否相等比如是是。就是重写了方法,所以出现了和结果不一致的情况。当然重写是有一定的标准的,如传递性,对称性等等,具体可以看源码要求不再一一展开。
判断对象是否相等是我们在项目中经常用到的,也是入门java必学的知识。今天就来谈谈==和equals的作用和区别。
1.==如何判断相等
先看一下一段代码:
int i1 = 1; int i2 = 1; String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(i1==i2); System.out.println(s1==s2);,
运行结果是true false,为什么一个是相等,而第二个是不等的。
1)对于基础类型(char、byte、short、int、long、float、double、boolean )==的作用就是判断值是否相等比如1.1==1.1是true,1=2是false。
2)对于对象来说,==的作用是判断对象的引用(对象的内存地址)是否一致。如果想判断对象的值是否一致,就需要用到equals。
2.equals的作用
先看一段代码:
String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1.equals(s2)); System.out.println(s1==s2);
运行结果:true false,那么为什么equals和==的结果是不一样的?
equals是java.lang.Object中的方法,所有对象都是继承Objetct的,也就是所有对象都拥有equals方法。源码如下:
public boolean equals(Object obj) { return (this == obj); }
原始的实现很简单就是用了==,但是我们可以重写equals方法,达到我们想要的判断值的标准。String.class就是重写了equals方法,所以出现了==和equals结果不一致的情况。
String.class重写equals的代码:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { 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; }
通过判断每一个字符是否一致来判断2个String对象是否一致。当然重写equals是有一定的标准的,如:传递性,对称性等等,具体可以看源码要求不再一一展开。
3.总结:
1).==用于基础数据类型时是判断值是否一致
用于对象时是判断对象的引用(所在的内存地址)是否一致
2)equals不可用于基础数据类型
默认也是使用==进行判断,但是可通过重写方法来定义自己的判断标准(重写equals方法时也需要重写hashcode方法)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67603.html
摘要:百度网盘提取码一面试题熟练掌握是很关键的,大公司不仅仅要求你会使用几个,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些有关的一些算法,设计模式等等。 百度网盘提取码:u6C4 一、java面试题熟练掌握java是很关键的,大公司不仅仅要求你会使用几个api,更多的是要你熟悉源码实现原理,甚...
摘要:原文地址游客前言金三银四,很多同学心里大概都准备着年后找工作或者跳槽。最近有很多同学都在交流群里求大厂面试题。 最近整理了一波面试题,包括安卓JAVA方面的,目前大厂还是以安卓源码,算法,以及数据结构为主,有一些中小型公司也会问到混合开发的知识,至于我为什么倾向于混合开发,我的一句话就是走上编程之路,将来你要学不仅仅是这些,丰富自己方能与世接轨,做好全栈的装备。 原文地址:游客kutd...
摘要:接下来分析几个常见的实现方式。再哈希法再哈希法,就是出现冲突后采用其他的哈希函数计算,直到不再冲突为止。,其中为不同的哈希函数。 由表及里,循序渐进,请往下看。随手点赞是对作者最大的鼓励!^0^。 什么是哈希表 引用:严蔚敏 《数据结构(C语言版)》中的内容 showImg(https://segmentfault.com/img/bVZlmE?w=800&h=364); 哈希表就是 ...
阅读 1497·2021-11-18 10:02
阅读 1626·2021-09-04 16:40
阅读 3150·2021-09-01 10:48
阅读 853·2019-08-30 15:55
阅读 1832·2019-08-30 15:55
阅读 1350·2019-08-30 13:05
阅读 2997·2019-08-30 12:52
阅读 1598·2019-08-30 11:24