关于JAVA中equal的使用方法有哪些?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JAVA中equal的使用方法有哪些?相关的知识,希望对你有一定的参考价值。
//Equals2.java
class Integer
private int i;
public Integer(int i)
this.i=i;
public class Equals2
public static void main(String[] args)
Integer n1=new Integer(100);
Integer n2=new Integer(100);
System.out.println(n1==n2);
System.out.println(n1.equals(n2));
为什么程序最后一句运行结果是false呀?
n1和n2是两个变量,虽然他们的值都为100,但是它们在内存中的地址不一样,而equals判断的是n1和n2两个变量的地址值,所以不一样。我根据你写的程序把n1和n2的值打印出来了,你看下就知道了。
参考技术A 因为你的Integer类没有重写equals方法, 所以调用的是父类的equals方法, 也就是Object的equals, 而查看Object的源码可以看到public boolean equals(Object obj)
return (this == obj);
相当于 n1==n2, 比较的是引用地址, 所以是false追问
public class Equals
public static void main(String[] args)
Integer n1=new Integer(100);
Integer n2=new Integer(100);
System.out.println(n1==n2);
System.out.println(n1.equals(n2));
请问你的这个有啥疑问
参考技术B equals判断的是:是否有相同引用。这两个是两个独立的对象,没有相同的引用。
如果你加上一句n1=n2,再equals判断就是true。因为n1引用了n2.
另外的例子,你建两个List(util包里的),分别在里面放上相同的数据,用equals判断也是false。 参考技术C equals 主要是用来判断String的 对于Int类型的数据 是用== 判断的
因为这是两个对象,他们的hashCode不同,所以不能单单使用equals判断相等
通常需要 重写equals方法做特殊处理。
我也就知道这么一点, 你可以打印一下他们的hashCode 就知道了。
希望对你有帮助。
在java中,关于equals(),和hashCode()的重写问题。
在java中,在集合类,关于equals()的重写,在equals(Object obj ),为什么要用Object来调用。不用其他的变量。还有hashCode()的重写问题,请大侠们给点详细的解释啊
java中所有类都是object的子类,子类拥有父类非私有的变量和方法因此不光可以用object调,所有java对象都可以调用equal方法。追问那hashCode()呢?这个我不是很理解额
追答hashcode是根据hash算法为每个散列在内存中对象生成一个标示码,当你实现hashcode方法时要考虑 你生成的hash值是否能和其他对象进行区分。看看think in java 都有
参考资料:think in java
参考技术A object更高级 是他们的父类对象 参考技术B object是所有类的基类以上是关于关于JAVA中equal的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章
在java中,关于equals(),和hashCode()的重写问题。