=号终究比较的是什么?

=号到底比较的是什么??
先看个程序
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对象也是相等的)
和其余的都没关系