1.通过字面量创建字符串和new 一个字符串对象有什么区别?那什么是常量池呢?
内存的分配方式不一样,通过字面量创建的字符串对象会分配到常量池中,通过new一个字符串对象会分配到堆中。常量池我的理解是,它存在于方法区(元空间)中,使用字面量创建的字符串 会直接缓存到常量池中,若再次使用该字面量创建新字符串时,不再创建新对象,而是从常量池中获取。
2.做字符串拼接的时候可以用String吗?StringBuilder和StringBuffer有什么区别?
不建议直接用String做拼接,最好StringBuild或者StringBuffer来做拼接。StringBuild是非线程安全的,效率高。StringBuffer是线程安全的,效率低一点,但安全。
3.子类重写父类含有抛出异常的方法时有那些要求?
不再抛出任何异常;
仅抛出部分异常;
不可以抛出额外异常;
不可以抛出父类异常
4.final、finally、finalize有什么区别?
final 用于修饰类、变量、方法。修饰类表示该类不可以被继承,修饰方法表示该方法不可以被重写、修饰变量为常量。
finally一般作用在try-catch捕获异常代码块中,不论代码是否发生异常,finally中的代码一定会被执行,通常用来关闭一些资源是使用。
finalize属于Object类中的一个方法,当对象被回收时,会调用此方法。
5.List集合和Set集合有什么区别?
List集合是可重复的,而且有序。set集合是无序的不可以重复。
6.集合中的泛型有什么用?
集合中的泛型是用来约束元素的类型的
7.常用的List集合有哪些?有些么区别?
常用的List集合有ArrayList LinkedList Vector.
ArrayList底层是数组,他的查询速度快,增删改慢;
LinkedList底层是链表,它的查询速度慢,增删速度快.
ArrayList和LinkedList都是非线程安全的