目录
2. String s = "Hello";s = s + " world!";这两行代码执行后,原始的String 对象中的内容到底变了没有?
4. String s = new String("xyz");创建了几个 String Object? 二者之间有什么区别? xyz 是字面量
6. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
7. final, finally, finalize 的区别
10. 给我一个你最常见到的 runtime exception。
12. 同步和异步有何异同,在什么情况下分别使用他们?举例说明
13. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?
1. String 是最基本的数据类型吗?
基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。
java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer 类
2. String s = "Hello";s = s + " world!";这两行代码执行后,原始的
String 对象中的内容到底变了没有?
没有。因为 String 被设计成不可变(immutable)类,所以它的所有对象都是不可变对象
3. 是否可以继承 String 类?
String 类是 final 类故不可以继承。
4. String s = new String("xyz");创建了几个 String Object? 二者之间有什么区别? xyz 是字面量
两个,一个放在常量区,不管写多少遍,都是同一个。New String 每写一遍,就创建一个新
5. String 和 StringBuffer 的区别
JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String 类提供了
数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。
典型地,你可以使用 StringBuffers 来动态构造字符数据。另外,String 实现了 equals 方法,new String“( abc”).equals(new String“( abc”)
的结果为 true,而 StringBuffer 没有实现 equals 方法,所以,new StringBuffer“( abc”).equals(new StringBuffer“( abc”)的结果为 false
6. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
try catch结构,finally的代码必然会执行,try先执行,如果try里面有返回值return,那么中断,执行完finally中代码再唤醒中断代码
public class test {
public static void main(String[] args) {
System.out.println(test1());
}
private static int test1() {
int i = 1;
try {
return i;
}catch (Exception e) {
// TODO: handle exception
}finally {
System.out.println("finally:"+(++i));
}
return 0;
}
}
输出结果:
finally:2
1