读书人

java中“==”“equals”hashcode其

发布时间: 2012-10-08 19:54:56 作者: rapoo

java中“==”,“equals”,hashcode之间关系

?代码如下:

?

?

?

?

结果如下:

?

truefalsetruefalsefalsetrues.hashCode is: 92599395s1.hashCode is: 92599395s2.hashCode is:92599395truetrue

?1.基本类型“==”比较的是值,a,b值相等,所以进宪“==”操作时强果为true.

?

??2.s是new出来,不管内存之间有没有“abcde”,JVM都会new个新的“abcde”;

???? s1是在编译时期就具有的 字符串常量,“abcde”是存在于栈区的,这不同于new关键字new出来的都是放在堆? 区?的。

所以“==”操作比较的是二个不同的对象,结果为false;

s.equals(s1)在String类型中比较的是值,s,s1的值都为“abcde”,所以结果为ture.

?

?3.明显 s3是s1的一个拷贝,“==” 与“equals”都为ture.

?

?4.s,s1,s2 它们的hashcode完全是一样, 实际是可以是指内容一样。

???? 对象相等,hashcode一定相等

???? 反之则不是: hashcode相等,对象不一定相等。

?

?

?总结一下:

??? ==或!=? 在比较基本类型时,比较的是值。 在比较【对象】时,比较的是对象的引用。如果想比较对象的值,就要用equals方法了。

?

读书人网 >编程

热点推荐