=号终究比较的是什么?
=号到底比较的是什么??
先看个程序
打印
很多人有自己对 对象直接关于 ==比较的看法
但我在这说自己发现的一些东西
这里的两个对象 但他的方法 equals是永远返回true的
但hashcode也是返回一样的数 也就是说这是hashcode也是相等的
但他们比较后(==)却不相等....
说明==和 hashcode和equals没有关系.....
他其实就是比较的在内存的地址 (String 在常量池中是相等的两个对象 还有-127-128范围内的Integer对象也是相等的)
和其余的都没关系
先看个程序
package com.test.one; public class one { private String name; private int id; @Override public int hashCode() { System.out.println("#"); return 1; }//重写hashcode/..... public boolean equals(one o) { if(o.name.equals(name)&&o.id==id) { return true; } return true; } public static void main(String[]args){ one o1=new one(); one o2=new one(); o1.id=1; o2.id=2; o1.name="o1"; o2.name="o2"; System.out.println(o1==o2); System.out.println(o1.toString()); System.out.println(o1.equals(o2)); } }
打印
false # com.test.one.one@1 true
很多人有自己对 对象直接关于 ==比较的看法
但我在这说自己发现的一些东西
这里的两个对象 但他的方法 equals是永远返回true的
但hashcode也是返回一样的数 也就是说这是hashcode也是相等的
但他们比较后(==)却不相等....
说明==和 hashcode和equals没有关系.....
他其实就是比较的在内存的地址 (String 在常量池中是相等的两个对象 还有-127-128范围内的Integer对象也是相等的)
和其余的都没关系