当前位置: 首页 > 后端技术 > Java

Java==和equals的区别

时间:2023-04-01 15:31:43 Java

==是一个运算符,equals是一个方法。对于原始类型变量,只能使用==,因为原始类型变量没有方法。使用==的比较是值比较。对于引用类型的变量,==比较的两个引用对象的地址是否相等。所有的类都继承objcet类,object类的equals方法比较对象的地址是否相等。如果类没有覆盖equals方法,使用==和equals方法有同样的效果。string类重写了equals方法。首先判断地址是否一致。如果为真,则返回真。如果不是,就是比较两个值是否一致。代码如下publicbooleanequals(ObjectanObject){//判断对象地址是否一致if(this==anObject){returntrue;}if(anObjectinstanceofString){StringanotherString=(String)anObject;intn=value.length;//值比较if(n==anotherString.value.length){charv1[]=value;charv2[]=anotherString.value;诠释我=0;while(n--!=0){if(v1[i]!=v2[i])返回假;我++;}返回真;}}returnfalse;}Java封装类的八种基本类型的equals方法基本相同:判断是否属于同一类型,直接返回false比较它们对应的值。Long类的equals方法示例publicbooleanequals(Objectobj){if(objinstanceofLong){returnvalue==((Long)obj).longValue();}返回假;}