-
java中==和equals和hashCode的区别
==是值比较,对于基本类型就是指变量的值,对于引用类型,指的是变量对应的地址。
equals 继承自Object,底层默认实现是==,各子类可以按需重写。
hashCode和equals一般配合使用,基本规范equals相等,则hashCode一定要相等。反之不一定。hashCode算法默认会调用native方法实现。
hashCode()方法返回的就是一个数值,从方法的名称上就可以看出,其目的是生成一个hash码。hash码的主要用途就是在对对象进行散列的时候作为key输入,据此很容易推断出,我们需要每个对象的hash码尽可能不同,这样才能保证散列的存取性能。事实上,Object类提供的默认实现确实保证每个对象的hash码不同(在对象的内存地址基础上经过特定算法返回一个hash码)。Java采用了哈希表的原理。哈希(Hash)实际上是个人名,由于他提出一哈希算法的概念,所以就以他的名字命名了。 哈希算法也称为散列算法,是将数据依特定算法直接指定到一个地址上。初学者可以这样理解,hashCode方法实际上返回的就是对象存储的物理地址(实际可能并不是)。 https://www.cnblogs.com/kexianting/p/8508207.html
-
int、char、long各占多少字节数?
-
int与integer的区别