天天看点

Java中的==、equals及hashCode

java中的== 和equals连个比较运算符是比较容易混淆的.

我们现在分别来谈谈什么是 == 什么是equals

==

java中的==可以用于基本类型及引用类型;

当用于基本数据类型的时候,其意义在于""==""脸变得值是否相等.

输出:

true

=============我是分隔符=============

当==符号用于引用类型的时候,其意义在于 比较双方对象是否相同

当然,对于string a = ""啊""和inreger i = 1对象的创建方式,==比较的方式你也可以姑且看作是值得比较.

本质:

在java中,""==""比较变量是,比较的就是系统"栈"中的内容,也就是栈中的值

基本数据类型在栈中的值就是其内容,而对象类型在栈中存储的是一个引用地址,这个地址就是对象在堆中的位置.对于"=="需要记住的就是以上内容

equals:

首先你需要名曲的就是基本数据类新没有equals方法,

第二,你需要明白的是,所有的类都有equals方法,因为一个类如果没有定义equals方法,它将默认继承object中的equals方法,返回值与==方法相同.

java.lang包中的object类有public boolean equals(object obj)方法,它比较两个对象是否相等

boolean equals(object o){

return this==o;

}

所以,如果你没有覆盖该方法,那么class a == class b 与 class a.equals(class b)的意义是一样的的;(注意:string和基本包装类型已经覆盖了该方法)

下面是代码的参考:

其详细情况可以参考:

<a href="http://blog.csdn.net/u010940300/article/details/44153967">http://blog.csdn.net/u010940300/article/details/44153967</a>