Java程序设计基础习题答案 下载本文

内容发布更新时间 : 2024/11/15 9:06:14星期一 下面是文章的全部内容请认真阅读。

(1)抽象类中可以有普通成员变量,接口中没有普通成员变量。

(2)抽象类有非抽象的方法和构造方法,并且修饰符可以是私有的,接口只能是抽象的方法,并且修饰符是public。

(3)抽象类中可以包含静态方法,接口中不能包含静态方法。 (4)类只能继承一个抽象类,但能实现多个接口。

15. Java中instanceof关键字的作用是什么?

参考答案:instanceof是Java中的一个二元操作符,也是Java中的保留关键字。它的作用是测试它左边的对象是否是它右边类的实例,返回boolean类型的值。

15. 阅读下面的代码 class A{

public static void prt() { System.out.println(\ }

public A() {

System.out.println(\ } }

public class B extends A { public static void prt() { System.out.println(\ }

public B() {

System.out.println(\ }

public static void main(String[] args) { A a = new B(); a = new A(); } }

请写出输出结果。 参考答案: A B A

第8章

1. 下面哪个类是异常类的基类? (1)String (2)Error

(3)Throwable (4)RuntimeException 参考答案:(3)为正确选项。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类,因此Throwable在异常类层次结构的顶层。在Java API中已经定义了许多异常类,这些异常类分为两大类归属于Throwable:错误(Error)和异常(Exception)。

2. 下面哪个选项中的异常类不是运行时异常? (1)NullPointerException (2)ClassCastException

(3)ArrayIndexOutOfBoundsException (4)SQLException

参考答案:(4)不是运行时异常。

3. 阅读下面代码: try {

int x = 0; int y = 5 / x;

} catch (Exception e) {

System.out.println (\} catch (ArithmeticException ae) {

System.out.println (\}

System.out.println (\ 以下哪一个选项的说明是正确的?

(1)执行结果为:finished (2)执行结果为:Exception (3)编译失败 (4)执行结果为:ArithmeticException

参考答案:(3)编译失败。因为ArithmeticException是Exception的子类,在使用其之前已经捕获了Exception。

4. 以下关于异常(Exception)的说法,哪一项是正确的?

(1)类的方法中发生的异常,可以通过try – catch 语句进行捕捉。

(2)JAVA中所有异常都必须被捕捉并处理,否则在编译时将提示编译错误。

(3)try-catch-finally语句来说,finally部分的代码,只在发生异常时执行。 (4)try-catch-finally语句来说,finally部分的代码,只在未发生异常时执行。

参考答案:(1)为正确项。

5. 以下关于异常(Exception)的说法,哪一项是正确的?

(1)Error类型的异常必须被捕捉处理,否则会提示编译错误 (2)SQLExcpetion属于RuntimeException

(3)在对异常进行捕捉处理时,finally部分必须存在

(4)在对异常进行捕捉处理时,catch部分可以对多个异常进行捕捉 参考答案:(4)为正确项。

6. 试说明Java中异常处理的方式。(根据自己的理解,简答即可) 参考答案:

(1)Java默认处理程序,程序终止,输出异常信息。

(2)程序处理,使用try-catch的语法,只有在知道如何处理的情况下才捕获异常!一旦程序中出现不可恢复的错误,程序应当尽快终止,不要尝试处理异常。 (3)回避异常,使用throws方法抛出。

(4)异常转换,异常捕获后后进行再次throw

7. 简述使用try-catch-finally时的注意事项。(根据自己的理解,简答即可) 参考答案:

(1)try块中的代码要少,最好只包含可能抛出异常的语句。

(2)catch异常时需要进行正确的处理,避免出现不处理的情况。 (3)多catch子句中子类异常一定要在父类异常之前。

(4)将资源释放的工作放在finally块中,这样保证资源被释放。

8. 简述子类覆盖父类方法时,如果父类方法声明处抛出异常,那么子类覆盖方法该如何处理异常? 参考答案:

Java继承中,子类可以覆盖父类的方法,如果父类方法会抛出异常,那么子类方法覆盖父类方法时需要注意:

(1)子类方法可以声明抛出和父类相同的异常。 (2)子类方法可以声明抛出父类方法异常的子类。 (3)子类方法可以不抛出任何异常。 (4)子类方法不能抛出其他预期异常。

9. 阅读下面代码:

int M = someValue; try {

System.out.println(\ if (M > 100)

throw new Exception(M + \ System.out.println(\} catch (Exception e) {

System.out.println(\}

如果someValue等于1000,写出上面代码段的输出结果。

参考答案:

Entering try block

ERROR: 1000 is too large

10. try{}块中有一个return语句,那么紧跟在这个try块后的finally块中的代码会不会被执行,什么时候被执行,在return之前还是之后?请举例说明。

参考答案:如果try块中没有异常产生,最后一条语句使用“return”直接返回或者catch块中使用“return”直接返回,finally代码块也会执行。例如:

public class FinallyBeforeReturn { public static void main(String[] args) { try { int division = 2; int result = 1 / division; //try块中的return语句,此处在异常产生之后,不会执行 return; } catch (ArithmeticException e) {

System.out.println(\进入catch块\

e.printStackTrace(); //catch块中的return,异常产生时就会执行 return; } finally { System.out.println(\使用return之后,finally仍然会执行\ } } }

程序在执行过程中,没有异常产生(当除数为0时会产生ArithmeticException异常,输出“进入catch块”信息),不会进入catch块执行输出语句。在try块中结束位置使用了“return;”语句直接从方法返回,此时是在try块中,所以在方法返回前一定会进入finally中执行代码,结果就是输出信息“使用return之后,finally仍然会执行”。

11. 请简述Java中error和exception的区别。

参考答案:二者的区别:Error类定义了在通常环境下不希望被程序捕获的异常,表示系统错误比较严重无法恢复的情况。Error类对象是由Java虚拟机生成并抛出,例如内存不足、堆栈溢出等情况,这种异常一旦出现意味着虚拟机内部出现严重问题,它们通常是致命性的错误,不是程序可以控制的,程序不应该捕获并尝试恢复。

Exception类定义了由应用程序抛出的异常,这些异常是可以被用户程序捕获的。Exception异常分为:运行时异常(RuntimeException)和预期异常(Checked Exception)。

12. 请简述final和finally的区别。

参考答案:

final是Java中的关键字,具有“无法改变”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员变量和方法。用final修饰的类不能被继承;用final修饰的方法不能

被覆盖;用final修饰的成员变量表示常量,值一旦给定就无法改变;final修饰的对象引用表示该引用不能在指向其它的对象,但是对象本身的成员变量的值是可以改变的。

finally用于异常处理,finally语句块是在同一个try/catch语句组中必须执行的部分。

13. 请写出下面程序的输出结果:

public class Exp {

public static void main(String[]args) { Exp exp = new Exp();

System.out.println(exp.test()); }

public int test() { try{

return m1(); } finally {

return m2(); }

}

public int m1() {

System.out.println(\ return 1; }

public int m2() {

System.out.println(\ return 2; }

}

参考答案:

m1 m2 2