中山大学_Java程序设计_2010秋复习题范文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.以下哪条语句可以通过编译?(c)
A. String #name = "Jane Doe";
B. int $age=24;
C. Double _height = "123.5";
D. double ~temp = 37.5;
2.下列关于Java类的构造方法的说法中错误的是:d
A. 构造方法的名字必须与类的名字完全相同。
B. 构造方法没有返回值也不能用void修饰。
C. 父类的构造方法不能被子类继承。
D. 构造方法必须用public访问控制符修饰。
3.给出如下代码:c
class Test {
private int m;
public static void fun() { /* some code... */ }
}
如何使成员变量m被函数fun()直接访问?
A. 将private int m改为protected int m
B. 将private int m改为public int m
C. 将private int m改为static int m
D. 将private int m改为int m
4.下面哪个函数是public void example() {...}的重载函数?d
A. public void example() {...}
B. public int example() {...}
C. public void example2() {...}
D. public int example(int m, float f) {...}
5.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序的特性称为( c )。
A. 隐藏
B. 覆盖
C. 重载
D. Java不支持此特性
6.以下程序的输出结果是(d)
public class Test {
public static void main(String [] args) {
int x = 5;
boolean b1 = true;
boolean b2 = false;
if ((x == 4) && !b2)
System.out.print("l ");
System.out.print("2 ");
if ((b2 = true) && b1)
System.out.print("3");
}
}
A. 2
B. 3
C. 1 2
D. 2 3
7.关于异常处理下列说法中正确的是:b
A. Java系统中所有异常都需要捕获处理。
B. catch子句是通过类型匹配来捕获异常对象的。
C. try-catch-finally结构处理完异常后结束程序的运行。
D. 异常是一种错误,所以在程序中应该完全避免异常的出现。
8.下列关于对象类型转换的说法中正确的是:b
A. 某类的对象引用只能指向它的直接子类的对象。
B. 不存在祖先与后代关系的两个类的对象之间一定不能进行类型转换。
C. 后代类的对象引用能指向其祖先类的对象。
D. 对象类型转换只有强制转换而没有自动转换。
9.类Teacher和Student是类Person的子类,则c
Person p; Teacher t; Student s; // 设p,t和s都是非null引用if(t instanceof Person) { s = (Student)t; }
关于最后一条语句的正确说法是:
A. 将构造一个Student对象。
B. 类型转换正确。
C. 表达式是错误的。
D. 编译时正确,但运行时错误。
10.根据下面代码,找出正确的选项。
d
public class Test {
static Object o;
public static void main(String args[]) {
System.out.println(o);
}
}
A. 编译时将产生错误。
B. 编译时正确,运行时将产生错误。
C. 程序输出零。
D. 程序输出null。
11.关于类Foo的以下说法中正确的是()b
class Foo {
static void alpha() { /* more code here */ }
void beta() { /* more code here */ }
}
A. 在alpha()中可以直接调用beta();
B. 在beta()中可以直接调用alpha();
C. 在其中任一个方法中均可以直接调用另一个方法
D. 在其中任一个方法中均不可以直接调用另一个方法
12.关于下面数组定义的正确说法是?d
String[][] s = new String[10][];
A. 数组s定义不合语法
B. s是10×10的2维数组
C. s数组的所有元素都是""
D. s是10个数组的数组
13.下列程序的正确输出是。
a
public static void main(String[] args) {
Scanner scanner = new Scanner("this is one that is two");
eDelimiter(" is"); // is前面有个空格
while(scanner.hasNext()) {
System.out.print(scanner.next());
}
}
A. this one that two
B. th one that two
C. thone that two
D. this is one that is two
一、改错题(20分)
说明:写出每段代码的错误原因并改正错误,每小题4分,说明原因和改正各2分。
1.class First { } mypackage应该放在第一行
import java.io.*;
package mypackage;
class Second { }
2.class A {
第 3 页共 7 页
String name;
public A(String s) { name = s; } 构造方法不应该有返回值类型}
class B extends A {
int id;
public B (int i) { id = i; } 同上
}
3.public class B extends A {
final void increase() {终极方法不能被子类覆盖
value += 2;
}
}
class A {
int value = 0;
final void increase() {
value += 1;
}
}
二、程序阅读题(20分)
说明:阅读下面程序并写出它们的输出结果,每小题5分。
1.程序如下:
class Base {
public Base() {
System.out.println("What a pleasure!");
}
public Base(String s) {
this();
System.out.println("I am " + s + "!");
}
}
public class Child extends Base {
public static void main(String args[]) {
Child t = new Child("Mike");
}
public Child(String s) {
super(s);
System.out.println("How do you do?");
}
public Child() {
this("I am Tom");
}
}
What a pleasure!
I am Mike!
How do you do?
2.程序如下:
class DivTest {
public static void main(String[] args) {
int r, n, d;
n = 10; d = 0;
try {
r = n / d;
System.out.println("r=" + r);
} catch(ArithmeticException e) {
System.out.println("发生除数为0的异常!");
} finally {
System.out.println("除法运算完毕!");
}
System.out.println("程序运行结束!");
}
}
发生除数为0的异常!
除法运算完毕!
程序运行结束!
三、应用设计题(6分)
下面是某公司人事管理系统进行分析过程中发现的部分类,请找出它们之间的关系,用UML的类图描述:
雇员、固定雇员、临时雇员、经理、促销员(临时)
第 5 页共 7 页
四、程序设计题(24分)
说明:按照题目要求编写下面两段程序。
1.编写一个完整的Java Application 程序。
包含类Person、Student、TestStudent,具体要求如下:(14分)
⑴类Person:
①属性
name:String对象,表示一个人姓名
sex:char类型,用来表示性别
id:String对象,表示身份证号
phone:String对象,表示联系电话
email:String对象,表示E-mail地址
②方法
Person(String name, char sex, String id):构造函数
String getId():获取身份证号
void setEmail(String email):设置E-mail地址
void setPhone(String phone):设置联系电话
String toString():返回个人的各项信息,包括姓名、性别等上述属性
⑵类Student:
从Person类派生,增加了以下属性和方法:
①属性
sNo:long类型,表示学生的学号
sClass:String对象,表示学生的班级
②方法
Student(long sNo, String name, char sex, String id):构造函数
setClass(String sClass):设置学生的班级信息
String toString():返回学生的各项信息,包括学号、班级、姓名等上述属性
⑶类TestStudent作为主类要完成测试功能
①用以下信息生成一个Student对象aStudent
姓名:杨过
性别:男
身份证号:
学号:
②设置E-mail: yangguo@
设置联系电话:
③输出对象aStudent的各项信息
2.求多个圆形面积之和。
(10分)
具体要求如下:
⑴定义一个名为Shape的接口,其中声明一个返回值为double的无参方法getArea()。
⑵定义一个圆形(Circle)类实现上面的Shape接口,有一个double类型的属性半径(radius)和两个构造方法。
其中,一个无参构造方法设置半径为0,另外一个有参构造方法根据参数设置半径,如果参数小于0则强制设置为0。
⑶编写一个类Test,在里面编写main方法,将数组{"12", "123", "1ab", ""}中的值转换为double类型作为半径,创建相应个数的圆。
在类型转换的过程中需作相应的异常处理,如果转换出错,提示并使用无参构造方法创建圆。
最后计算所有圆的面积之和并输出。
第 7 页共 7 页。