202111-16 解决idea默认带的equals和hashcode引起的bug idea默认带的equals和hashcode引起的bug最近因规范需要,统一使用idea,使用的版本为2017.4.建立一个实体类,在添加的时候,使用idea的快捷键自动生成了equals和hashcode方法.选择2个属性进行生成然后往list中添加,结果一直出现重复记录,调试半天发现if(!super.equals(o))returnfalse;这一句是进行引用比较,如果同一个类,直接返回,导致出现问题。按理说我选择属性进行比对,肯定是不可能是相同引用了,所以2017.3.4分版本... 继续阅读 >
202010-10 浅谈String类型等值比较引起的“==”、“equals()”和“hashCode”思考 关于String类型的等值比较和内容比较,是学习java甚至任何编程语言所共同的常见问题,理解String类型的等值比较和内容比较也是面试经常问到的问题。String类型的等值比较和内容比较字符串等值比较publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,CharSequence{/**Thevalueisusedforcharacterstorage.*/privatefinalcharvalue[];publicbooleanequals(ObjectanObject){... 继续阅读 >
202010-08 简单介绍java中equals以及==的用法 简单介绍equals方法是java.lang.Object类的方法有两种用法说明:一、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各... 继续阅读 >
202010-08 java中如何区分==和equals 网上搜了一遍,对于==和equals的表达感觉不全面;总感觉缺点什么;今天把这个比较总结出来三条规律。结论1.基本类型没有equals方法,只有==比较,比较的是值。结论2.所有对象的==比较都是内存地址的比较(上面的两点简单不介绍了)首先我们看Integer类的比较。Integera=1000;Integerb=1000;System.out.println(a==b);//falseSystem.out.println(a.equals(b));//true因为a和b都是对象类型,所以都有自己的堆内存地址,... 继续阅读 >
202010-04 Java中替代equals,compareTo和toString的方法 我们都曾在POJO中重写过equals(),compareTo()和toString()方法。但是另有其他能做到职责分离的更好的方法并带来更简洁的代码。阅读这篇文章来一探究竟吧!更简明的职责——摆脱equals、compareTo和toString方法你曾经查看过java文档中的Object类吗?也许吧。每当你向上追溯继承树的时候都会止步于这个类。你会注意到,该类有几个方法是每一个类都必须继承的。而你最喜欢重写的方法可能就是toString(),.equals()and.hashCode()... 继续阅读 >
202010-01 如何区分JAVA中的equals与== java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。基本数据类型比较==和Equals两者都是比较值;equals()与==都是java中用于进行比较的,返回boolean值,不同的是equals()是Object类中定义的一个方法,==是一个比较运算符。下面是equals()在Object中的源码:publicbooleanequals(Objectobj){... 继续阅读 >
202009-27 Java重写equals及hashcode方法流程解析 初步探索首先我们要了解equals方法是什么,hashcode方法是什么。equals方法equals是java的obejct类的一个方法,equals的源码如下:publicbooleanequals(ObjectparamObject){return(this==paramObject);}由此我们可以看到equals是用来比较两个对象的内存地址是否相等。hashCode方法hashCode方法是本地方法,用于计算出对象的一个散列值,用于判断在集合中对象是否重复的关键。一条定理equals相同的对象,hashCode必然相同。... 继续阅读 >
202009-23 Object类toString()和equals()方法使用解析 我们知道,Object类是所有类的父类,因此也被称为根类、祖先。那么,我们就来看一看Object类的最常用的两个方法是如何用的。1.toString方法:Object类的toString()方法默认返回的是对象地址值,如果某个类的toString()方法返回的不是对象地址值,则说明这个类重写了toString()方法。publicclassTest5{publicstaticvoidmain(String[]args){Personp1=newPerson();System.out.println(p1.toString());//没有... 继续阅读 >