1. ArrayList,Vector,LinkList区别?
2. HashMap和Hashtable的区别?
3. String类为什么要重写hashCode和equals方法?如果重写equals方法而不重写hashCode方法会出现什么问题?
4. 写出下面程序运行的结果,给出简单的理由说明为什么会出现这样的结果?
Integer i1=130;
Integer i2=130;

Integer j1=70;
Integer j2=70;

Integer m1=new Integer(10);
int m2=10;
Integer m3=new Integer(20);

System.out.println(i1==i2);
System.out.println(j1==j2);
System.out.println(m3==(m2+m1));
5.简述String,StringBuffer,StringBuilder之间的区别?

 

1、
①.ArrayList和Vector都是基于数组实现的,LinkedList是基于链表实现的。
②. ArrayList和LinkedList都是线程非同步的,Vector是线程同步的。可以使用Collections.synchronizedList()来进行同步。
③.ArrayList对于查找元素效率高,不适于大量元素的插入和删除。LinkedList对于插入和删除元素的效率高,不适于查找元素。由于Vector实现了同步,在性能上要比ArrayList的效率低。
④.ArrayList在容量不足时进行扩容扩充为原来的1.5倍,Vector扩展为原来的2倍。

2、
①. 两者实现的功能基本相同, HashMap是线程非同步的,Hashtable是线程同步的。(jdk5中引入了并发包,其中的ConcurrentHashMap基本可以代替 Hashtble,Hashtable已经基本上不在使用了.)
②.HashMap的键和值均允许空值null,Hashtable不允许。
③. 两者都实现了Map接口,Hashtable基础了Dictionary类,HashMap没有继承该类。
④. HashMap的迭代器Iterator是快速失败机制(fail-fast机制),Hashtable的迭代器enumerator不是快速失败机制。
3、
①. String类中重写了Object的HashCode和equals方法,equals方法比较的是两个对象的内容是否相等,如果两个对象的内容相等则两个对象的hash码必需要相等。
如果不重写equals,那么比较的将是两个对象的地址是否相等,即相当于使用的是==进行比较。
②.String类在比较两个对象 是否相等是首先会计算对象的Hash码,如果两个对象的Hash码不相等,那么这两个对象必定不相等,就不会 在调用equals进行比较了,由于Hash码是基于Hash表存储的,查找只需一次。两个对象不等时,不在比较equals,可以提高比较的效率。
③.重写equals方法时,一定要重写hashCode方法。hashCode方法一般用于HashSet/HashMap等集合类来比较两个对象是否相等,如果重写equals方法(比较的是成员属性是否相等)而不重写hashCode方法,那么当两个对象相等时,他们的hashCode却不相等,这就会造成理解的不一致。(Set集合将可能会存储相同的对象)。

4. false
true
true
理由:Integer是包装类类型,会进行自动 装箱和拆箱。在进行自动拆箱操作时实际上调用的是Integer.valueOf()这个方法,该方法中对于-128-127之间的数会将它直接进行转换成int类型(相当于一个常量池),对于不在这个范围的数,将它存入常量池IntegerCache.cache中,要重新用new关键字创建对象。

对于第一个超过范围127,要重新创建对象,==只是比较地址是否相等,用equals比较则会返回true.
对于第二个在范围在-128-127,直接进行拆箱,和String类String s=”liuq”
String n=”liuq” s==n比较一样,返回true.
对于第三个当m1+m2相加 后得到的是一个int 类型的变量,==比较时 Integer m3会进行自动拆箱转换成int,所以实际上是比较int 20==20.

5、String类 字符串不可变的,另外两个均可以变。String类用final关键字修饰,可以用于多线程环境下,StringBuffer是线程安全的类,StringBuilder不是线程安全的,不能用于多线程环境下。
性能上:StringBuilder>StringBuffer>String.

posted on 2016-07-30 22:06  rising1234  阅读(360)  评论(0编辑  收藏  举报