本文主要是介绍Java基础常问问题 一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
java基础:
java对象的hashcode是怎么算的?
hashCode的常规协定是: http://www.bysocket.com/?p=263
1、在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
2、如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
3、如果根据equals方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
容器:hashmap stringbuffer
hashmap
1 hashmap的数据结构是什么?
是链表组成的数组,数组的下标是索引值,数组的每一项是链表
2 hashmap的原理是什么?
主要是添加索引,把元素按照索引分组
3 hashmap是线程安全的吗?
不是线程安全的,ConcurrentHashMap是线程安全的
4 hashmap中元素的put和get操作原理是什么?
解答:通过hash算法计算index,在index中调用equals方法比较元素的key进行get或者put。
5 hashmap和hashtable的区别是什么?
Hashmap线程不安全,hashtable线程安全。
6 对象的hashCode方法原理是什么,有什么用?
7 StringBuilder和StringBuffer有什么区别,分别是做什么的?
Hashmap的put和get方法参考:
http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/
这篇关于Java基础常问问题 一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!