资源描述:
《java面试知识点总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、精品文档java面试知识点总结不少人反映java面试的题目不简单,下面为大家搜索整理了java面试知识点总结,希望对大家有所帮助。1.Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?byte——1byte——Byteshort——2bytes——Shortint——4bytes——Integerlong——8bytes——Longfloat——4bytes——Floatdouble——8bytes——Doublechar——2bytes——Characterbooleanboolean数据类型非true即false。这个数
2、据类型表示1bit,但是它的大小并没有精确定义。《Java虚拟机规范》中如是说:“2016全新精品资料-全新公文范文-全程指导写作–独家原创9/9精品文档虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型单独使用是4个字节,在数组中
3、又是1个字节。那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗?实际上,使用int的原因是,对于当下32位的CPU来说,一次进行32位的数据交换更加高效。综上,我们可以知道:官方文档对boolean类型没有给出精确的定义,《Java虚拟机规范》给出了“单独时使用4个字节,boolean数组时1个字节”的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是一种时空权衡。boolean类型的封装类是Boolean。2.谈一谈”==“与”equals()"的
4、区别。《ThinkinJava》中说:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。"=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义“相等”这个概念。比如类库中的String、Date等类就对这个方法进行了重写。2016全新精品资料-全新公文范文-全程指导写作–独家原创9/9精品文档综上,对于枚举类型和原始数据类型的相等性比较
5、,应该使用"==";对于引用类型的相等性比较,应该使用equals方法。3.Java中的四种引用及其应用场景是什么?强引用:通常我们使用new操作符创建一个对象时所返回的引用即为强引用软引用:若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap弱引用:若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收虚引用:虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就
6、是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。4.object中定义了哪些方法?clone(),equals(),hashCode(),toString(),notify(),notifyAll(),wait(),finalize(),getClass()5.hashCode的作用是什么?请参见散列表的基本原理与实现6.ArrayList,LinkedList,Vector的区别是什么?ArrayList:内部采用数组存储元素,支持高效随机访问,支持动态调整大小2016全新精品资料-全新公文范文
7、-全程指导写作–独家原创9/9精品文档LinkedList:内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问Vector:可以看作线程安全版的ArrayList7.String,StringBuilder,StringBuffer的区别是什么?String:不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象StringBuilder:可变字符序列,支持向其中添加新字符(无需创建新对象)StringBuffer:可以看作线程安全版的StringBuilder8.Map,Set,List,Queue、S
8、tack的特点及用法。Map:Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的两个核心操作是get(Objectkey)以及put(Kkey,Vvalue)