Caution :
一.1 以下哪条语句可以通过编译?(b) 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 给出如下代码:b 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() {...}的重载函数?b
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不支持此特性
以下程序的输出结果是() public class Test {
public static void main(String [] args) { int x = 5;
boolean b1 = true;
第 1 页 共 9 页
boolean b2 = false; if ((x == 4) && !b2)
System.out.print(\"l \"); System.out.print(\"2 \");
if ((b2 = true) && b1) //若是改成 if ((b2==true) && b1) 则只输出 2 System.out.print(\"3\"); } } A. 2 B. 3 C. 1 2
一.6 关于异常处理下列说法中正确的是:B A. Java系统中所有异常都需要捕获处理。
B. catch子句是通过类型匹配来捕获异常对象的。
C. try-catch-finally结构处理完异常后结束程序的运行。 D. 异常是一种错误,所以在程序中应该完全避免异常的出现。
一.7 下列关于对象类型转换的说法中正确的是: A. 某类的对象引用只能指向它的直接子类的对象。
B. 不存在祖先与后代关系的两个类的对象之间一定不能进行类型转换。 C. 后代类的对象引用能指向其祖先类的对象。 D. 对象类型转换只有强制转换而没有自动转换。
一.8 类Teacher和Student是类Person的子类,则B
Person p; Teacher t; Student s; // 设p,t和s都是非null引用 if(t instanceof Person) s = (Student)t;
关于最后一条语句的正确说法是: A. 将构造一个Student对象。
D. 2 3
B. 类型转换正确。
C. 表达式是错误的。
D. 编译时正确,但运行时错误。
第 2 页 共 9 页
一.9 根据下面代码,找出正确的选项。D public class Test { static Object o;
public static void main(String args[]) { System.out.println(o); } }
A. 编译时将产生错误。 B. 编译时正确,运行时将产生错误。 C. 程序输出零。 D. 程序输出null。
关于类Foo的以下说法中正确的是()
A
class Foo {
static void alpha() { /* more code here */ } void beta() { /* more code here */ } }
A. 在alpha()中可以直接调用beta(); B. 在beta()中可以直接调用alpha();
C. 在其中任一个方法中均可以直接调用另一个方法 D. 在其中任一个方法中均不可以直接调用另一个方法
一.10 关于下面数组定义的正确说法是?D String[][] s = new String[10][]; A. 数组s定义不合语法 B. s是10×10的2维数组 C. s数组的所有元素都是\"\" D. s是10个数组的数组 一.11 下列程序的正确输出是。A
public static void main(String[] args) {
Scanner scanner = new Scanner(\"this is one that is two\");
scanner.useDelimiter(\" is\");
while(scanner.hasNext()) {
System.out.print(scanner.next()); }
第 3 页 共 9 页
}
A. this one that two C. thone that two
B. th one that two
D. this is one that is two
改错题(20分)
说明:写出每段代码的错误原因并改正错误,每小题4分,说明原因和改正各2分。
1. class First { }
import java.io.*; package mypackage; class Second { }
2. class A {
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; } }
第 4 页 共 9 页
一、程序阅读题(20分)
说明:阅读下面程序并写出它们的输出结果,每小题5分。 1. 程序如下:
class Base {
public Base() {
System.out.println(\"What a pleasure!\"); }
public Base(String s) {
this(); //调用上面的public Base() ??? 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\"); } }
E:\\shiyan\\others>java What a pleasure! I am Mike!
How do you do?
第 5 页 共 9 页
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(\"程序运行结束!\"); } }
二、应用设计题(6分)
下面是某公司人事管理系统进行分析过程中发现的部分类,请找出它们之间的关系,用UML的类图描述:
雇员、固定雇员、临时雇员、经理、促销员(临时)
三、程序设计题(24分)
第 6 页 共 9 页
说明:按照题目要求编写下面两段程序。 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 姓名: 杨过 性别: 男
身份证号: 22033198807070333 学号: 2004002
② 设置E-mail: yangguo@zjtvu.edu.cn 设置联系电话: 88078549
③ 输出对象aStudent的各项信息
public class testStudent{
第 7 页 共 9 页
public static void main(String [] x){ Student astudent=new Student(2004002,\"杨过',\"22033198807070333\");
astudent.setEmail(\"yangguo@zjtvu.edu.cn\"); \男
astudent.setphone(\"88078549\"); String info=astudent.toString(); System.out.println(info); } }
/*********************************/ class Person{
String name; char sex; String id; String phone; String email;
Person(String name, char sex, String id){ this.name=name; this.sex=sex; this.id=id; }
public String getID(){ return id; }
public void setEmail(String email){ this.email=email; }
public void setphone(String phone){ this.phone=phone; }
public String toString(){ return \"这个人的\"+name+\" ,\"+sex+\" ,\"+id+\" ,\"+phone+\" ,\"+email; } }
/************************************/ class Student extends Person{
第 8 页 共 9 页
信息\\n
:
long sNO;
String sClass;
public Student(long sNo, String name, char sex, String id){
super( name, sex, id); //注意这里 this.sNO=sNO; }
public void setClass(String sClass){ this.sClass=sClass; }
public String toString(){ return \"这个学生的信息:\\n\\n姓名 \"+name+\" \\n性别 \"+sex+\" \\n身份证 \"+id+\" \\n电话号码 \"+phone+\" \\n邮箱 \"+email; } }
求多个圆形面积之和。(10分)
具体要求如下:
⑴ 定义一个名为Shape的接口,其中声明一个返回值为double的无参方法getArea()。
⑵ 定义一个圆形(Circle)类实现上面的Shape接口,有一个double类型的属性半径(radius)和两个构造方法。其中,一个无参构造方法设置半径为0,另外一个有参构造方法根据参数设置半径,如果参数小于0则强制设置为0。
⑶ 编写一个类Test,在里面编写main方法,将数组{\"12\\"123\\"1ab\\"\中的值转换为double类型作为半径,创建相应个数的圆。在类型转换的过程中需作相应的异常处理,如果转换出错,提示并使用无参构造方法创建圆。最后计算所有圆的面积之和并输出。
第 9 页 共 9 页