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[])构造器。
- 你知道的 List 都有哪些?
ArrayList、LinkedList、Vector 等。
- List 和Vector 有什么区别?
Vector 是 List 接口下线程安全的集合。List 是有序的吗?
List 是有序的。
- ArrayList 和 LinkedList 的区别?分别用在什么场景?
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))。
- main 方法是做什么用的?
- main 方法是 Java 程序的入口方法,JVM 在运行的时候会首先查找 main 方法。
- 不用 main 方法如何运行一个类?
- 不行,没有main 方法我们不能运行 Java 类。
- 在 Java 7 之前,你可以通过使用静态初始化运行 Java 类。但是,从 Java 7 开始就行不通了。
- main 方法如何传递参数?传递参数的类型是什么?能不能改变该参数类型?
- String 数组,不能改变。
- main 方法为什么是静态的?能不能改为非静态?
- main()方法一定是静态的,如果 main()是非静态的那么在调用 main 方法时 JVM 就得实例化它的类。
- 不能改为非静态,main()方法必须声明为静态的,这样 JVM 才可以调用 main()方法而无需实例化它的类。
- 如果从 main()方法去掉“static”这个声明,虽然编译依然可以成功,但在运行时会导致程序失败。
- 在实例化时,还得调用类的构造函数。如果这个类的构造函数有参数,那么届时就会出现歧义。
- main 方法能被重载吗?
- 可以,我们可以重载main()方法。一个 Java 类可以有任意数量的 main()方法。
- main 方法能被覆盖吗?
- 在 Java 中静态方法在编译时会编译在一起,main 方法是静态方法,所以你在 Java 中不能覆盖静态方法。
- main 方法的返回类型是什么?能不能改变?
- void,不能改变。
- main 方法的作用域用什么修饰?能不能改变?
- public,不能改变。
- main 方法可以同步吗?
- main 方法可以在 Java 中同步,synchronized 修饰符允许用于 main 方法的声明中,这样就可以在 Java 中同步 main 方法了。
- main 方法可以终结吗?
- 可以在 Java 中终结 main 方法。