一、选择、填空(每题 1 分,共 30 分)
1、运行 Java 程序需要的工具软件所在的目录是__A___。
A)JDK 的 bin 目录
C)JDK 的 lib 目录
2、以下___B____不是 Java 中有效的关键字
B)JDK 的 demo 目录
D)JDKR 的 jre 目录
A)const
C)false
B) NULL
D) this
3、下列关于 for 循环和 while 循环的说法中哪个是正确的___A____
A)while 循环能实现的操作,for 循环也都能实现
B)while 循环判断条件一般是程序结果,for 循环判断条件一般是非程序结果
C)两种循环任何时候都可替换
D)两种循环结构中都必须有循环体,循环体不能为空
4、下列关于 Java 对 import 语句规定的叙述中,错误的是___C__。
A)在 Java 程序中 import 语句可以有多个
B)在 Java 程序中 import 语句可以没有
C)在 Java 程序中 import 语句必须有一个
D)在 Java 程序中 import 语句必须引入在所有类定义之前
5、下列基本类型数据所占的字节数相同的是__A____
A) boolean 和 char
C) byte 和 short
B) int 和 float
D) int 和 double
6、以下的选项中能正确表示 Java 语言中的一个 double 型常量的是 C
A) Float.MIN_VALUE
C) 2.0
7、阅读下列代码后
public class Person{
B) 1.8e-6F
D)abcf’
int arr[]=new int[10];
public static void main(String args[]){
System.out.println(arr[1]);
}
B)编译时正确,运行时将产生错误
D)输出为空
}
正确的说法是 ____A____
A)编译时将产生错误
C)输出为零
8、下列语句序列执行后,k 的值是 C
int
if(i>j||m
}
A) 31
10、下列语句序列执行后,ch1 的值是
D) 33
B) 32
C) 2
B
char ch1='A',ch2='W';
if(ch1+2 < ch2 ) ++ch1;
B) ‘B’
D) B
C) ‘C’
A) ‘A’
11.内部类是在一个类内嵌套定义的类。其特点描述错误的是(A )
(A)只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名
(B)可以使用它所在类的静态成员变量或实例成员变量,但不可以使用所在类中的局部变量
(C)可以作为其它类的成员,而且可访问它所在类的成员
(D)除 static 内部类外,不能在类内声明 static 成员
12、下列叙述中,错误的是__D_____
A)接口与类的层次无关
C)通过接口可了解对象的交互界面
13、System 类在哪个包中 D
A) java.util
14.当方法遇到异常又不知如何处理时,下列哪种说法是正确的(C )
A.捕获异常 B.抛出异常 C.声明异常 D.嵌套异常
15. 给出一段程序,试判断哪个是正确的结果( D
public class MyProgram{
B) java.io C) java.awt D) java.lang
B)通过接口说明类所实现的方法
D)接口与存储空间有关
)
public static void main (String args[]){
try{
System.out.print(“Hello world ”);
}
finally{
System.out.println(“Finally executing”);
}
}
}
A、无法编译,因为没有指定异常
B、无法编译,因为没有 catch 子句
C、Hello world
D、Hello world Finally executing
16、封装、继承 和多态是 Java 语言的三大基本特性。
17、Java 程序从 main 方法 开始执行。
18、Java 中类成员的权限修饰词有以下几种:private, public, __protected___, __默认
____。其中, ___public_____的限定的范围最大。
19、接口中所有属性均为___public______、___static______和___final_____的。
20、Java 中所有类都是类 ___Object_____的子类。
21、final 关键字能修饰__非抽象类___、___非抽象类成员方法__、__变量___。
22、在 Java 中,3.14156D 表示的是______double______类型的数据。
23、复用代码的两种方法 复用类组合和继承
24、Java 中的基本数据类型和对象引用类型分别存储在 栈 和 栈 。
。
25、一个对象是某个类的_成员对象___,如果要建立一个属于类 Car 的对象 myCar,其语法
格式为___Car myCar=new Car()__。
26、Java 不直接支持多继承,但可以通过_____接口_______实现多继承。
27、如果有一个类 MyFrame 是 Frame 的子类,能够被不同包中的类所使用,请写出该类的
声明头
_import
28.用 static 修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方
法只能处理用关键字 static 修饰的数据。
29.比较两个对象里面的值是否相等,可以通过实现 object 中 equals 方法的覆写来实现。
30.Java 语言通过 接口 和 类 支持多重继承,使类继承具有更灵活的扩展性。
java.awt.*________________。
二、程序分析题(共 30 分)
2.1 对下面的程序,分析程序输出结果(10 分)
class Plate {
Plate(int i) {
System.out.println("Plate constructor");
}
}
class DinnerPlate extends Plate {
DinnerPlate(int i) {
super(i);
System.out.println("DinnerPlate constructor");
}
}
class Utensil {
Utensil(int i) {
System.out.println("Utensil constructor");
}
}
class Spoon extends Utensil {
Spoon(int i) {
super(i);
System.out.println("Spoon constructor");
}
}
class Fork extends Utensil {
Fork(int i) {
super(i);
System.out.println("Fork constructor");
}
}
class Knife extends Utensil {
Knife(int i) {
super(i);
System.out.println("Knife constructor");
}
}
class Custom {
Custom(int i) {
System.out.println("Custom constructor");
}
}
public class PlaceSetting extends Custom {
private Spoon sp;
private Fork frk;
private Knife kn;
private DinnerPlate pl;
public PlaceSetting(int i) {
super(i + 1);
sp = new Spoon(i + 2);
frk = new Fork(i + 3);
kn = new Knife(i + 4);
pl = new DinnerPlate(i + 5);
System.out.println("PlaceSetting constructor");
}
public static void main(String[] args) {
PlaceSetting x = new PlaceSetting(9);
}
}
结果:
Custom constructor
Utensil constructor
Spoon constructor
Utensil constructor
Fork constructor
Utensil constructor
Knife constructor
Plate constructor
DinnerPlate constructor
PlaceSetting constructor
2.2 阅读程序,分析输出结果(20 分)
abstract class Base {
public Base(int i) {
System.out.println("Base constructor, i = " + i);
}
public abstract void f();
}
public class AnonymousConstructor {
public static Base getBase(int i) {
return new Base(i) {
{
System.out.println("Inside instance initializer");
}
public void f() {
System.out.println("In anonymous f()");
}
};
}
public static void main(String[] args) {
Base base = getBase(47);
base.f();
}
System.out.println("Game constructor"+i);
}
class Game {
Game(int i) {
public class Contents{
int i;
}
结果:
Base constructor, i =47
Inside instance initializer
In anonymous f()
三、改错题(10 分),找出错误并写出正确答案
1
2
3
4
5
6
7
8
9
10 class BoardGame extends Game {
11
12
13
14
15
16
17
18
19
20
21
22
23
double x = 0;
//应定义为 float 格式
System.out.println("double argument:");
}
public static main(String[] args) {
}
public class Demotion {
}
}
}
void f(float x) { System.out.println("f1(float)"); }
void testDouble() {
void Contents(int j){i=j;}//应该把 void 去掉
BoardGame(int i) {
Game(i);
System.out.println("BoardGame constructor"+i);
//super(i);
BoardGame x = new BoardGame(3);
//漏写 void
f(x);
}
}
Demotion p = new Demotion();
p.testDouble();
}
public static void main(String[] args) {
24
25
26
27
28
29
30
四、编程题(每题 15 分,共 30 分)
4.1 编写 Java 应用程序实现下面数据的排序
int a[]={52, 38, 16,89, 24, 18, 0, 190, 87, 21}
import java.util.*;
public class Ssort {
public static void main(String[] args) {
int a[]={52, 38, 16,89, 24, 18, 0, 190, 87, 21};
Arrays.sort(a);
System.out.println("排序之后的结果: ");
for(int i = 0; i < a.length; i++){
System.out.print(a[i] + ", ");
}
}
}
4.2 编写一个算法求 n!。
import java.util.*;
import java.io.*;
class aa {
public static
void main(String[] args) throws IOException {
int sum=1,num;
String str;
System.out.println("请输入 n:");
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
str=buf.readLine();
num=Integer.parseInt(str);
if(num!=0)
{
for(int i=1;i<=num;i++)
{
sum=sum*i;
}
}
else{ System.out.println("0 的阶乘是 0");
}
System.out.println("n 的阶乘是:"+sum);}}