Java程序设计A期中测试参考解答
信管13级Java语言程序设计A期中测试 参考解答 一.选择(共10题,每题1分或2分,共11分) 1.JRE可以识别( D )文件。 A).java B).jre C). D).class 2.如果将JDK安装到D:\Java\JDK文件夹,则应设置Path路径为( C )。 A)D:\Java B)D:\Java\JDK C)D:\Java\JDK\bin D)D:\Java\JRE 3.编辑好源程序MyApp.java后,在命令提示符下进行编译,正确的命令是( D )。 A)java MyApp B)java MyApp.java C)javac MyApp D)javac MyApp.java 4.以上源程序通过编译后,在命令提示符下解释执行,正确的命令是( A )。 A)java MyApp B)java MyApp.java C)javac MyApp D)javac MyApp.java 5.每个对象都有类的( C )的副本。 A)对象 B)引用 C)实 例变量 D)方法 6.main()方法的形参可以写作( B C )。 A)String args B)String[] args C)String args[] D)String[] args[] 7.在类的内部声明,但又处于该类所有方法之外的变量是( A )。 A)实例变量 B)局部变量 C)类变量 D)引用变量 8.在方法内部声明的变量是( B )。 A)实例变量 B)局部变量 C)类变量 D)引用变量 9.当出现( B )时,子类中定义的新方法将取代父类中的相应方法。 A)继承 B)覆盖 C)重载 D)多态 10.类SavingsAccount是类BankAccount的子类,如果类 SavingsAccount的构造函数中有super( ) 语句,则该语句将调用( D )。 A)类SavingsAccount的super( )方法 B)类BankAccount 的super( )方法 C)类SavingsAccount的构造函数 D)类 BankAccount的构造函数 二.简答(共4题,第1题1分,第2题1分,第3题2分,第4题5 分,共9分) 1.将引用变量作为实参传递给方法的形参时,传递的是引用?还是对 象? 解:引用 2.对于一个未知数组长度的整型数组numbers,描述数组最后一个元 素的表达式是什么? 解:numbers[numbers.length - 1] 3.(1)何种情况下,你不得不将类声明为抽象类?(2)抽象类是否 可实例化? 解:(1)类中至少有一个抽象方法 (2)不能 4.类A定义有方法m1( ),其子类B定义有方法m2( )。 (1)A类对象可访问这2个方法中的哪些方法? (2)B类对象可访问这2个方法中的哪些方法? (3)对于实际指向B类对象的类A引用变量,可访问这2个方法中的 哪些方法? (4)若这2个方法都声明为private,B类对象可访问这2个方法中 的哪些方法? 解:(1)m1( ) (2)m1( )与m2( ) (3)若无强制类型转换,只 有方法m1( ) (4)m2( ) 三.分析(共8题,第1题7分,第2题6分,第3题10分,第4题2 分,第5题 2分,第6题3分,第7题7分,第8题12分,共49分) 1.以下Java程序未通过编译,请在错误处进行修改,或将改好的程序 写在空白处。解答:在错误处进行修改 1 public class LotsOfErrors { 2 public static void main(String[] args) { 3 System.out.println(“I Rule“); 4 message(); 5 } 6 7 public static void message() { 8 System.out.println(“The World“); } 9 } 2.以下程序的执行结果是什么?最后变量times为什么是这个值? public class Test{ public static void main(String[] args){ int times = 3; System.out.println(“Before the call, variable times is “ + times); nPrintln(times); System.out.println(“After the call, variable times is “ + times); } public static void nPrintln(int n){ while(n 0){ System.out.println(“n = “ + n); n--; } } } 解:Before the call, variable times is 3 n = 3 n = 2 n = 1 After the call, variable times is 3 Java的参数传递机制是传值,而不是传址。方法main( )中调用 方法nPrint( ),实参times的值3传递给形参n,参数传递后,实参 times的值不变。换一个角度看:times是main( )方法中的局部变 量,因此作用域仅限于main( )方法,生命周期从调用main( )方法 开始,执行main( )方法完毕结束。 3.某类有两个同名方法add( ),这两个方法的返回类型相同,那么这 两个方法的形参能否相同?为什么?这两个方法的形参能否不同?为 什么?若两个同名方法add( )定义如下: double add(int num1, double num2){ return num1 + num2; } double add(double num1, int num2){ return num1 + num2 + 1; } 以下A)B)C)D)四选项中,分别用不同的实参调用add( )方 法,其中哪些能通过编译,运行结果是什么?哪些不能通过编译? A)add(3, 3.14) B)add(3.14, 3) C)add(3, 3) D) add(3.14, 3.14) 解:这两个方法的形参不能相同,因为同一类中不可能存在方法的覆 盖。 这两个方法的形参可以不同,因为方法可以重载。 A)和B)能通过编译,运行结果分别是6.14和7.14。 C)和 D)不能通过编译。 4.如果给定类X: class X{ private int count; } 那么类Y正确吗?为什么? class Y{ public static void main(String args[]){ X ob = new X( ); ob.count = 100; } } 解:不正确。类X的实例变量count是private的, 无法在类X之外访 问。 5.以下类X正确吗?