向了新的 String 对象。
而如果直接使用 StringBuffer 类,程序将只产生两个对象:最初的 StringBuffer 和拼接时的
String("I love you so much."),也不再需要创建临时的 StringBuffer 类对象而后还得将其
转换回 String 对象。
short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; s1 = s1 + 1; (s1+1 运算结果是 int 型,需要强制转换类型)
short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 += 1;(可以正确编译)
8. 是否可以继承 String 类? [难]
String 类是 final 类故不可以继承。
9. throw 与 throws 有什么区别? [中]
throws 是用来声明一个方法可能抛出的所有异常信息
throw 则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过 throws 声明方法(类)可能抛出的异常信息,而在方
法(类)内部通过 throw 声明一个具体的异常信息。
throws 通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw 则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常
信息抛出。
throws 语句
throws 用来标明一个成员函数可能抛出的各种"异常"。对大多数 Exception 子类来说,Java
编译器会强迫你声明在一个成员函数中抛出的"异常"的类型。如果"异常"的类型是 Error 或
RuntimeException,或它们的子类,这个规则不起作用,因为这 copy;在程序 的正常部分中
是不期待出现的。如果你想明确地抛出一个 RuntimeException,你必须用 throws 语句来声
明它的类型。这就重新定义了成员函数的定义语法: type method-name(arg-list) throws
exception-list { }下面是一段程序,它抛出了一个 "异常", 但既没有捕捉它,也没有用
throws 来声明。这在编译时将不会通过。
try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什
么时候被执行,在 return 前还是后?
会执行,在 return 前执行。
10. 常见的 runtime exception 有哪些?。 [中]
ArithmeticException,
ArrayStoreException,
BufferOverflowException,
BufferUnderflowException,
CannotRedoException, CannotUndoException,