1、String 是基本数据类型吗?
String 不是基本数据类型。
2、String 是可变的话?
String 是 final 类型的,不可变。
3、怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象? 比较字符串的值是否相同用 equals,比较字符串对象是否同一个用==。
4、switch 中可以使用 String 吗?
jdk7+中的 switch 可以使用String 类型。
5、String str = new String("abc");创建了几个对象,为什么?
创建了两个,"abc"本身创建在常量池,通过 new 又创建在堆中。
6、String、StringBuffer、StringBuilder 有什么区别?
String、StringBuffer、StringBuilder 最大的不同是 String 不可变,后者可变。StringBuffer 是线程安全的,StringBuilder 线程不安全速度较快。
7、String.trim()方法去掉的是哪些字符? trim 去掉字符串首尾的空白字符。
8、String 可以被子类继承吗?
既然 String 是 final 的,所以不能被继承。
9、可以自定义 java.lang.String 类并使用吗?
可以自定义 java.lang.String 类并编译成功,但不能被加载使用,具体请学习类加载机制。
10、String 与 byte[]两者相互之间如何转换?
String > byte[] 通过 String 类的 getBytes 方法;byte[] > String 通过 new String(byte[])构造器。
ArrayList、LinkedList、Vector 等。
Vector 是 List 接口下线程安全的集合。List 是有序的吗?
List 是有序的。
ArrayList 和 LinkedList 数据结构不一样,前者用在查询较多的场合,后者适用于插入较多的场合。
5、ArrayList 和 LinkedList 的底层数据结构是什么?
ArrayList 使用的是数组结构,LinkedList 使用的是链表结构。
6、ArrayList 默认大小是多少,是如何扩容的?
Jdk1.7 之前 ArrayList 默认大小是 10,JDK1.7 之后是 0,JDK 差异,每次约按 1.5 倍扩容。
7、List 是线程安全的吗?如果要线程安全要怎么做?
List 中的 Vector 才 是 线 程 安 全 的 , 其 他 要 实 现 线 程 安 全 使 用 工 具 类
Collections.synchronizedList(new ArrayList())方法。
8、怎么给 List 排序?
使用 List 自身的 sort 方法,或者使用 Collections.sort(list)方法;
9、Arrays.asList 方法后的 List 可以扩容吗?
Arrays.asList 使用的是 final 数组,并且不支持 add 方法,不支持扩容。
10、List 和 Array 之间如何互相转换?
List>Array 使用 toArray 方法,Array>List 使用 Arrays.asList(array)方法,由于它是固定的,不固定的可以使用new ArrayList(Arrays.asList(array))。