精选 30 道 java 笔试题解答

本文来源于:blog.csdn.net/lanxuezaipiao/article/details/16753743 ,并修正了其中的一些错误。

1. 下面哪些是 Thread 类的方法()

A start()
B run()
C exit()
D getPriority()

答案:ABD

解析:看 Java API docs 吧:http://docs.oracle.com/javase/7/docs/api/ ,exit() 是System 类的方法,如 System.exit(0)。

2. 下面关于 java.lang.Exception 类的说法正确的是()

A 继承自 Throwable
B Serialable
CD 不记得,反正不正确

答案:A

解析:Java 异常的基类为 java.lang.Throwable,java.lang.Error 和 java.lang.Exception 继承 Throwable,RuntimeException 和其它的 Exception 等继承Exception,具体的 RuntimeException 继承 RuntimeException。 扩展:错误和异常的区别(Error vs Exception)

java.lang.Error:Throwable 的子类,用于标记严重错误。合理的应用程序不应该去 try/catch 这种错误。绝大多数的错误都是非正常的,就根本不该出现的。 java.lang.Exception:Throwable 的子类,用于指示一种合理的程序想去 catch 的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去 catch 它。

Error 和 RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的 Exception 类都是检查了的异常(checked exceptions). checked exceptions:通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如 FileNotFoundException, ParseException 等。 unchecked exceptions:通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如 ArrayIndexOutOfBoundException, ClassCastException 等。从语言本身的角度讲,程序不该去 catch 这类异常,虽然能够从诸如 RuntimeException 这样的异常中 catch 并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是 bug ,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对 Errors 和 unchecked exceptions 应该让程序自动终止执行,程序员不该做诸如 try/catch 这样的事情,而是应该查明原因,修改代码逻辑。

RuntimeException:RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

处理 RuntimeException 的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException 等等)checked 异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

3. 下面程序的运行结果是()

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

答案:false

解析:因为 str2 中的 llo 是新申请的内存块,而 == 判断的是对象的地址而非值,所以不一样。如果是 String str2 = str1,那么就是 true 了。

未完待续。


本文永久更新地址:https://nnngu.github.io/LearningNotes/interview/2018/04/07/%E7%B2%BE%E9%80%89-30-%E9%81%93-Java-%E7%AC%94%E8%AF%95%E9%A2%98%E8%A7%A3%E7%AD%94/