1、String为什么是final的?
String是其核心类。
安全性:避免产生病毒;效率性:作为工具,提高效率。String
final说明String类是不可以做父类的,即String类不能产生子类。
那么就不会重写String的方法,就不存在产生String的继承子类,从而与操作系统打交道,产生危害性影响,比如病毒。
2、ArrayList继承了AbstractList为何还要实现List接口?因为AbstractList已经implements List接口。
一句话:历史原因
美好的理解:使用ArrayList时,可以立即看出它是List,便于理解。(ArrayList实现List的可以去掉)
相同情况还有:
HashMap继承了AbstractMap为何还要实现Map接口?
HashSet继承了AbstractSet为何还要实现Set接口?
Vector既然继承了AbstractList为啥还要实现List接口
相似情况:Hashtable为什么继承了Dictionary并且实现了Map接口? 但是Dictionary却没有实现Map接口?
一句话:历史原因
详细解释:在java1.2之前,是没有Map接口的,只有Hashtable,后来在1.2中,引入java collection之后,重写了Hashtable,让其实现Map接口。
小结:java存在代码风格不一致,稍加注意,不要过于执拗。
3、关键字instanceof
一句话:不推荐用,避免这种结构化编程模式。
具体原因见网址:http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html
4、hashcode的作用
简单理解:用户函数equals()的辅助判断。对象存储的物理地址。
在一个list、set集合中,有如下判断:
1、两个对象相等equails,则hashcode一定相等。
2、hashcode相等,两个对象不一定相等。
区别:equals()一般给用户调用;hashcode()给对象内部调用。
相近概念:文件的MD5.
补充说明:hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等
参考网址:
1、http://zhidao.baidu.com/link?url=rdq57-hfGYcAT7IJ_JZ-Ybfl5iE0T5hqzbgOFZoL4RKPt85AgZRaaVj2x6Y0NxEnu6BxEk3jdHw3xVOwSFEgVa
2、http://blog.youkuaiyun.com/fenglibing/article/details/8905007
5、ArrayList与LinkedList的区别
ArrayList是基于动态数组的的数据结构;
LinkedList是基于链表的数据结构。
所以:ArrayList优于数据读写;LinkedList优于数据插入、删除。
参考网址:http://zhidao.baidu.com/link?url=0XfKAGgA8Ohi2XkCIFnPtIJmkFx9MngSWmaodDZn3gUEKUpstbEs5Qz7fV_B350DQfGoGF481JQoj54PH-H0Ka
http://blog.youkuaiyun.com/qianzhiyong111/article/details/6678035