`

=号到底比较的是什么??

 
阅读更多
先看个程序
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对象也是相等的)
和其余的都没关系
分享到:
评论

相关推荐

    计算机网络常见问题解答

    问题1-15:什么是“无缝的”、“透明的”和“虚拟的”? 问题1-16:在教材的1.7.2节提到协议有三个要素,即语法、语义和同步。语义是否已经包括了同步的意思? 问题1-17:为什么协议不能设计成100%可靠的? 问题1-18...

    最新Java面试宝典pdf版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java面试宝典-经典

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    java面试题大全(2012版)

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的...

    Java面试宝典2012版

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 51 75、描述一下JVM加载class文件的原理机制? 52 76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾...

    java面试宝典2012

    74、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 56 75、描述一下JVM加载class文件的原理机制? 56 76、heap和stack有什么区别。 57 77、GC是什么? 为什么要有GC? 57 78、垃圾回收的...

    清华大学的计算机网络课件

    问题1-15:什么是“无缝的”、“透明的”和“虚拟的”? 问题1-16:在教材的1.5.2节提到协议有三个要素,即语法、语义和同步。语义是否已经包括了同步的意思? 问题1-17:为什么协议不能设计成100%可靠的? 问题1-18...

    浅谈java字符串比较到底应该用==还是equals

    浅谈java字符串比较到底应该用==还是equals Java 中的字符串比较是一个非常重要的主题,在实际项目中,正确地比较字符串是非常关键的。在 Java 中,有两种方式来比较字符串,一种是使用 "==" 运算符,另一种是使用 ...

    你必须知道的495个C语言问题

    **1.5 关键字auto到底有什么用途?** `auto`关键字在C语言中有两种用途: - 在函数内部声明局部变量,默认就是`auto`,因此通常可以省略。 - 在C99标准及以后版本中,`auto`可以用来声明变量时动态地推断其类型。 ...

    超级有影响力霸气的Java面试题大全文档

    从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 12、...

Global site tag (gtag.js) - Google Analytics