1. JDK1.5新增的语言特性
枚举
变参
泛型:由运行时报错转为编译时报错
自动拆装箱:简化代码
Foreach循环:简化代码,避免数组越界
静态导入:可直接使用静态成员,效果为类似于类中存在此方法,直接用
注释:annotation
2. JDK1.6
简化webservices
Scripting,整合脚本语言,实现了JSR223
Database,绑定derby
Desktop apis
监视和管理
Pluggable annotaitons
Complier api:访问编译器,实现了JSR199
Security:安全性
Instrumentation
http
JMX与系统管理
3. Switch(exp),exp是一个整数表达式,因此,传递给switch和case语句的参数应该是int,short,byte或char,而long,string不行
4. “java里面参数传递都是按值传递”的意思是
按值传递是传递的值的拷贝
按引用传递的是引用的地址值
统称为按值传递
5. String类提供的字符串数值不可改变
StringBuffer类提供的字符串可修改
6. String ,StringBuffer与StringBuilder的区别
String的长度是不可改变的
StringBuffer的长度是可变的,若经常改变,则用它(线程安全)
StringBuilder是从JDK5开始,为stringBuffer 补充的一个单个线程的等价类,优先使用StringBuilder,因为它支持所有相同操作,但由于它不执行同步,速度更快
toString,StringBuffer是Synchronized,而StringBuilder不是
7. ArrayList,Vector,LinkedList的存储性能和特性
· ArrayList和Vector都是使用数组方式存储数据,此数组元素大于实际存储的数据,以便增加和插入元素。他们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快,而插入数据慢,Vector由于使用了Synchronized方法,通常性能较ArrayList差
· LinkedList使用双向链表实现存储,按序号索引需要向前式遍历,但是插入数据时只需要记录本项记录前后即可,所以插入速度较快
8. Synchronized和Lock的异同
相同点:lock能完成Synchronized的所有功能
不同:lock有比Synchronized更加精确的线程语义和性能。Synchronized会自动释放锁,而lock要手动释放,且在finnally中释放
9. 数据库查询很慢的处理方法
建索引
减少表的关联
优化sql
简化查询字段
10. Hashmap和hashtable的区别
继承与实现的差别:HashTable是基于陈旧的Dictionary类,完成了Map接口;HashMap是JDK1.2以后引进的MAP接口的一个实现
线程安全不同:HashTable是同步的,HashMap是未同步,所以多线程场合需要手动同步HashMap
对NULL处理不同:HashTable不允许NULL值,key和value都不可以,HashMap允许,key和value都可以,HashMap中判断是否存在某个键不用get(),用containskey()
方法不同:HashTable有一个contains方法,功能与containsValue一样。
11. Connection与Connections区别
Connection是java.util下的接口,是各种集合结构的父接口
Connections是java.util下的类,它包含各种有关集合操作的静态方法
12. Sleep和wait的区别
这两个方法来自不同的类,分别是thread和Object
最主要是sleep方法没有释放对象锁,而wait方法释放,使得其他线程可以使用同步控制块或者方法
Wait,notify,notifyall只能在同步控制块或者同步控制方法中使用,而sleep可以在任何地方使用
Sleep必须捕获异常,而wait等不需要