《Java程序设计》练习题 下载本文

《Java程序设计》练习题

一、判断题

1、Java语言采用面向对象的思想编程,具有跨平台、分布式、多线程等优点。( ) 2、在main方法中可以直接调用非静态的方法。 ( ) 3、方法重载就是一个类中有多个同名但有不同形参和方法体的方法。 ( ) 4、抽象类可有构造方法,因此也能用new进行实例化。 ( ) 5、一个类可继承多个父类,实现多个接口。 ( ) 6、用final修饰的类不能被继承。 ( ) 7、在Java程序中发生异常时,JVM会找到每个符合条件的catch都执行一次。 ( ) 8、一个Java源程序可有多个类,但只仅有一个public类,而且源程序名与public类名相同。( )

9、类A和类B在同一个包中,则除了私有成员外,类A可以访问类B的所有成员。( ) 10、接口中的成员变量全部为常量,方法为抽象方法。 ( ) 11、方法中的形参可以和方法所属类的属性同名。 ( ) 12、接口无构造器,不能有实例,也不能定义常量。 ( ) 13、java的类不允许嵌套定义。 ( ) 14、在接口中所有的方法都是抽象方法,所以必须在方法定义之前加上abstract关键字。 ( ) 15、抽象类中不能包含final修饰的方法。 ( ) 16、在Java程序中异常分为运行时异常和非运行时异常,非运行异常必须进行处理( ) 17、System.out和System.err都是标准的输出流,都可以在监视器上打印输出 ( ) 18、在JFrame中添加组件时不能直接用add方法。 ( ) 19、如果想让Frame窗口能够被关闭,则可以实现WindowListener接口,并且实现

windowClosing()方法。 ( ) 20、GridLayout的构造器可以包含两个参数,分别是指网格的行数和列数,行数为0则表示可以有任意行,列数为0则表示可以有任意列 ( ) 21、启动多线程必须调用start()方法, 如果调用run方法则没有启动新的线程 ( ) 22、run方法是运行线程的主体,若run方法运行结束,线程就消亡了。 ( ) 23、利用File对象可以判断一个文件或目录是否存在。 ( ) 24、JFrame,JPanel,JApplet和JButton四种组件都属于容器组件。 ( ) 25、BorderLayout是面板的缺省布局管理器。 ( ) 26、BorderLayout最多可以使用5个组件。 ( ) 27、一个面板(JPanel)不能被加入另一个面板(JPanel)中。 ( ) 28、菜单需要一个JMenuBar对象,以使他们能被添加到JFrame。 ( ) 29、线程可以用yield使同优先级的线程运行。 ( ) 30、System.in是标准输入流,能用read方法读取键盘的输入。 ( )

31、数据流就是数据通信通道,指在计算机的输入输出之间运动的数据序列。( ) 32、标签(JLabel)可以在屏幕上显示一个字符或一幅画。 ( ) 33、BorderLayout是容器javax.swing.JFrame默认的布局管理器。 ( ) 34、编写小应用程序(Applet)一般需要编写两种类型的文件,即Java源文件和Html文件。 ( ) 35、要在程序中实现多线程,必须在源程序前面使用import语句显示的导入Thread类。

( )

第 1 页 共 48 页

36、通过类java.net.URL中的成员方法可获得网络资源定位器的相关信息( ) 37、catch块后必须有finally块。 ( ) 38、JTextArea可以用来接收多行文本的输入。 ( ) 39、一个线程创建并启动后,它将执行自己的run()方法。 ( ) 40、Socket的实例对象调用其成员方法getInputStream来获得该Socket所对应的输入流。( )

51、在Java坐标系统中,X值从左向右增加。( )

52、BorderLayout布局管理器把组件排列在北、南、东、西和中间区域。( ) 53、JTextArea是提供操作单行文本的区域。( ) 54、异常处理器的排列次序影响处理异常的方法。( ) 55、线程可以用yield方法使较低优先级的线程运行。( ) 56、随机存取文件中的记录必须等长。( )

57、数据报(DatagramPacket)传输是不可靠的,无法保证包按顺序到达。( ) 58、用catch(Exception exception)语句可以捕获所有异常和错误。( ) 59、每个Java线程的优先级都设置在常数1~12之间,默认的优先级设置为常数6。( ) 60、当Socket连接上面的传输结束后,服务器执行Socket的shutdown方法来关闭连接。( )

二、填空题

1、在JDK操作命令中,编译命令(或编译器)是_____________________,运行命令(或解释器)是___________________,Java类文件归档命令是________________________,使 Applet应用小程序脱离Web浏览器环境进行运行和调试的命令是________________________。

2、在Java基本数据类型中,float的缺省值是_________________,boolean的缺省值是__________________。Java的变量类型分为_______________数据类型和______________数据类型。

3、已知int x=123,则表达式x/100+x0/10+x的值为___________________,表达式++x + x++的值为______________________。

4、设 int x=12,y=5; 执行语句(x%y==0)&&(x>y)的值为________________,执行语句 x=x++/--y 后x的值为 。

5、某Java源程序中有一个类的定义为:public class MyPrg,则该源程序的文件名应该为: 。

6、将一个字符串s转换为int型整数,需要用到包装类___ _ 的 ___ _ 方法。

7、语句String s = new String(\创建了 个String对象。 8、 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 方法是不能被当前类的子类重新定义的方法。 9、定义字符串:

String s = new StringBuffer().append(\, 则s的值是____ _。

10、数组在Java语言中是一种__________________形式的数据类型,它存储的是数组的地址,而不是数组的元素值,System类里的__________________方法是复制数组的一种方法,它可指定需要复制元素和存放目标数组的位置。

11、创建一个名为 MyPackage 的包的语句是 ,

第 2 页 共 48 页

该语句应该放在程序的位置为: 。 12、在java源程序的类头中使用关键字________声明该类实现某个接口。

13、对象是用________________关键字实例化类之后的结果,______________访问修饰符所声明的类成员,仅能被同包(同路径)或具有继承关系的相关类使用。

14、当一个类获取另一个类中所有的非私有的数据和操作作为它自己的部分或全部成分时,就称为这两个类之间具有______________关系。________________是用来实现类间多重继承功能的结构。

15、用new关键字实例化类之后的结果是__________,接口是指利用___________关键字来声明,其中不包含任何实现语句,仅建立抽象成员方法的一种类。

16、抽象类用关键字___________修饰,抽象类的目的是___________________。

17、Java中所有类都是类 的子类。引用ArrayList和Vector都要加载的语句是______________________________。

18、Throwable的直接子类是_____ ___和___ ______。

19、java通过五个关键字来管理异常处理:try,catch,_______,_______,________。 20、输入流和输出流在Java中对应两个抽象类____________和_____________。InputStream及其子类读取_____流数据。Reader及其子类用于读取 流数据。

21、输入输出异常类的类名是: 、数组下标越界异常类的类名是: 。

22、用FileInputStream类创建文件(c:\\test.txt)对象的语句是____________________________________________,DataInputStream对象提供___________________方法可以按行读取文件内容。 23、创建以读写方式打开文件(c:\\test.txt)的RandomAcessFile对象,并使得raf成为该对象的应用变量的语句是 ;之后,从c:\\test.txt文件中读取一个int型整数到变量i中可以使用语句: 。

24、在编写Java界面程序时,常用的布局管理器包括流式布局管理器FlowLayout、边界布局管理器BorderLayout、_____________________和__________________。

25、相对于AWT的组件来说,swing中的组件被称作 ,JFrame是swing中的顶层容器组件,不能直接在它上面放置其他组件,而必须将组件放置在它内容面板上,

获得其内容面板容器的方法是: 。容器组件的布局管理器 决定放置在它上面的各组件的大小和位置,可以用 方法设置容器组件的布局管理器。

26、在Swing GUI层次体系中的顶层容器主要包括 javax.swing. 、javax.swing. 和javax.swing. 。

27、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 类的子类并且存储该源程序文件的文件名为 。

28、当小应用程序被调用时,类Applet成员方法 被首先调用,当关闭小应用程序时,类Applet成员方法 被最后调用。

29、Container 的________方法可以将_______组件加入容器。

30、编写一个线程可以用继承 类和实现 接口来实现。

31、在执行Java线程的程序中,程序通过调用_______方法启动线程,随后又调用________方法。

第 3 页 共 48 页

32、如果几个并发线程对相同的数据对象进行存取,可能导致数据不一致,为避免发生这种情况,需要编程实现线程同步,在执行访问共享数据的代码时对数据加互斥锁,加锁语句的关键字是_______ ___________,如果编程时不注意,加锁可能导致死锁,避免死锁的一般做法是 。 33、Java线程程序可以调用____________方法,使线程进入睡眠状态,可以通过调用___________________方法设置线程的优先级。

34、通过实现接口 可以创建一个包含线程体的类,该接口只申明了一个方法: ,假定一个线程体对象为rt,则可以用Thread myThread = 语句来创建一个线程对象,并用语句 启动myThread线程对象。

35、Java提供两种套接字,其中使用_______协议的被成为流套接字,使用____协议的被称为数据报套接字。

36、DatagramPacket类的________方法返回一个整数,它指定DatagramPacket的端口;DatagramPacket类的_________方法返回一个整数, 它代表DatagramPacket中的字节数。 37、在TCP协议下建立通信程序,在服务器端首先要创建类 的实例对象;在客户端,创建类 实例对象。

38、java.net中提供了两个类_________________和_______________,分别用于服务器端和客户端的Socket通信。

39、用Java实现网络编程时,在有连接的Socket通信机制中,服务器端阻塞用Socket对象的_________________方法,而在无连接的Socket通信机制中, 服务器端阻塞用DatagramSocket对象的_____________________方法。

40、基于TCP的Java网络编程中,服务器端阻塞用Socket对象的 方法。 基于UDP的Java网络编程中, 服务器端阻塞用DatagramSocket对象的 方法。

三、选择题

1、编译Java源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( ) A) .java B) .class C) .html D) .exe 2、Java 编译程序的文件名是( )

A) java.exe B) javadoc.exe C) javac.exe D) jar.exe

3、下述那一个保留字不是类及类成员的访问控制符( ) A) public B) private C) static D) protected 4、下列变量定义合法的是 ( ) A) boolean flag=False; B) int k = 1+‘1’; C) char c = “b”; D)float radius = 1.2;

5、下面哪个是不合法的变量名称? ( ) A) 2D B) True C) _name D) T1

6、 下面哪个定义变量的语句不合规范? ( ) A、 int retireAge=60;

B、 final int RETIREAGE=60; C、 static int retireAge=60;

第 4 页 共 48 页

D、 private int RETIREAGE=60;

7、下列数组的定义不合法的是: ( ) A) char c[][]=new char[2][3]; B) char c[][]=new char[6][]; C) char [][]c=new char[][4];

D) int []a[] = new int[10][10];

8、下列数组的定义合法的是( )

A) int a = (1,2,3); B) int d[]= (1?3);

C) int []a[] = new int[3][]; D) char [][]c=new char[][4]; 9、下述哪个说法是不正确的?( )

A) 局部变量在使用之前无需初始化,因为有该变量类型的默认值 B) 类成员变量由系统自动进行初始化,也无需初始化 C) 参数的作用域就是所在的方法

D) for语句中定义的变量,当for语句执行完时,该变量就消亡了 10、下列说法中,不正确的是( )

A) 一个java源程序编译通过后,得到的结果文件数也只有一个。 B) 一个java源程序经过编译后,得到的文件的扩展名一定是.class。

C) 一个java源程序只能有一个public class类定义,且源文件的名字与public class的类名相同,扩展名必须是.java。

D) 一个java源程序可以包含多个class类。

11、下列说法中,不正确的是: ( ) A、一个java源程序经过编译后,得到的文件的扩展名一定是.class。 B、一个java源程序编译通过后,得到的结果文件数也只有一个。 C、一个java源程序编译通过后,得到的结果文件数可能有个。 D、一个java源程序编译通过后,不一定能用java解释器执行。

12、对于以下声明:

String s1=\

String s2=\ String s3;

下面的操作合法的是( )

A)s3=s1+s2; B)s3=s1-s2; C)s3=s1&s2; D)s3=s1&&s2; 13、下面的代码合法的是: ( ) A) public abstract method();

B) public abstract void method(); C) public abstract void method(){ };

D) public void method() implements abstract;

14、执行语句:int n = 7; int b = 2 * n++;后,b和n的值分别是 ( ) A) b = 15, n = 8 B) b = 16, n = 8 C) b = 14, n = 8 D) b = 14, n = 7

15、下列哪个不能作为switch表达式的数据类型( ) A) int B) char C) short D) long 16、下面哪一项是Java实现动态多态性的具体手段( )

第 5 页 共 48 页

A) 重载; B) 覆盖(重写) C) 接口 D) 抽象类 17、下列哪一个是创建数组的正确指令( ) A) int[] a = new int[10]; B) int[] a = new int(10); C) int a[]; D) int[] a;

18、System.out.print(“1”+2)打印到屏幕的结果是( ) A) 3 B) 12 C) 1+2 D) 4

19、对于下列代码: public class Example{

String str=new String(\ char ch[]={'d','b','c'};

public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch);

System.out.println(ex.str+\ }

public void change(String str,char ch[]){ str=\

ch[0]= 'a';

} }

输出结果是: ( ) A) hello and d B) hello and a C) world and d D) world and a

20、下列说法哪个是正确的? ( ) A) 子类不能定义和父类同名同参数的方法 B) 子类只能继承父类的方法,而不能重载

C) 重载就是一个类中有多个同名但有不同形参和方法体的方法 D) 子类只能覆盖父类的方法,而不能重载

21、如果一个程序段中有多个catch,则程序会按如下哪种情况执行? ( ) A) 找到合适的例外类型后继续执行后面的catch B) 找到每个符合条件的catch都执行一次

C) 找到合适的例外类型后就不再执行后面的catch D) 对每个catch都执行一次

22、以下哪一项不是File类的功能: ( ) A) 创建文件 B) 创建目录 C) 删除文件 D) 拷贝文件

23、下列说法哪个是正确的? ( )

第 6 页 共 48 页

A) BorderLayout是面板的缺省布局管理器

B) 当鼠标指针位于一个GUI组件的边上时,发生一个MouseEvent事件 C) 一个面板(JPanel) 不能被加入到另一个面板(JPanel)中

D) 在BorderLayout中,添加到NORTH区的两个按钮将并排显示。 24、下列类不属于java.lang.*包的是( )

A) Math B) System C) Date D) StringBuffer 25、System类属于下列哪个包?( )

A) java.io.* B) java.lang.* C) java.util.* D) java.awt.* 26、下列哪个不属于File类中的方法( )

A) exists( ) B) delete( ) C) mkdir( ) D) copy( ) 27、下列哪个不属于StringBuffer类中的方法?( )

A) compareTo ( ) B) indexOf( ) C) append( ) D) charAt( ) 28、下列接口或类不属于java.util.*包的是( )

A) Collection B) StringTokenizer C) Map D) Character 29、假设int x=4,y=100,下列语句的循环体共执行几次?( )

while(y/x>3){ if(y%x>3) { x=x+1; } else{

y=y/x; } }

A) 1次 B) 2次 C) 3次 D) 4次 30、Test.java程序代码如下:

1) public class Test{

2) public static void main(String[] args){ 3) System.out.println(args[2]); 4) } 5) }

以上程序编译后用java Test 1 2 3 4运行的输出结果是什么? ( ) A) 1 B) 2 C) 3 D) 4

31、对于异常处理语句try?catch?finally,下面哪个说法是正确的?( ) A) 如果有多个catch语句,对所有的catch都执行一次 B) 如果有多个catch语句,对每个符合条件的catch都执行一次 C) 找到合适的异常类型后就不再执行后面的catch

D) 任何情况下,finally部分都会被执行一次

32、对于异常处理语句try?catch,下面那句话不正确? ( )

A、一个符合条件的catch的处理语句中没有break语句,则执行后会继续执行后续catch B、不管有没有捕获异常,finally部分都会被执行 C、找到合适的异常类型后就不再执行后面的catch D、应该先处理子异常类,再处理父异常类。

33、用文件字节输出流对文件进行写操作时,需要先创建文件输出流对象,文件输出数据流

第 7 页 共 48 页

的构造方法是 public FileOutputStream(String name,Boolean append) throws FileNotFoundException,当参数append的值为true时,表示 ( ) A、创建一个新文件 B、在原文件的尾部添加数据 C、覆盖原文件的内容

D、在原文件的指定位置添加数据

34、下列哪种操作不会抛出异常?( ) A) 浮点数除0

B) 浮点数乘0

C) 打开不存在的文件

D) 用负数索引访问数组

35、在java程序中,下列关于线程的说法错误的是( ) A) 线程启动调用start方法 B) 线程的主体是run方法

C) 线程运行中调用sleep方法可以进入阻塞状态

D) 在java中,优先级的数值为1的线程可以抢占优先级为5的线程的资源 36、下述哪一组方法,是一个类中方法重载的正确写法? ( ) A、int addValue( int a, int b ){return a+b;}

float addValue ( float a, float b) {return a+b;} B、int addValue (int a, int b ){value=a+b; }

float addValue ( int a, int b) {return (float)(a+b);} C、int addValue( int a, int b ){return a+1;} int addValue ( int a, int b) {return a+b;} D、int addValue( int a, int b ) {return a+b;} int addValue ( int x, int y ) {return x+y;} 37、若编译和运行下列代码,出现的结果将是 ( ) class MyClass{ int i = 0;

public int myMethod(int x){ return i+x; }

public static void main(String args[]) { System.out.println(myMethod(10)); } }

A、0 B、10 C、编译出错 D、 以上答案都不对 38、以下是接口I的定义: interface I{

void setValue(int val); int getValue(); }

以下哪个代码能通过编译?( ) A) class A extends I{ int value;

void setValue(int val){value=val;}

第 8 页 共 48 页

int getValue(){return value;}

}

B) class B implements I{ int value;

void setValue(int val){value=val;}

}

C) interface C extends I{ void increment( );

}

D) interface D implements I{ void increment();

}

39、对于以下类: class A{}

class B extends A{} class C extends A{} public class Test {

public static void main(String args[]) { A x= new A(); B y=new B(); C z=new C();

//此处插入一条语句 } }

下面哪个语句可以放到插入行? ( )

A) x=y; B) z=x; C) z=(C)y; D) y=(A)y;

40、若编译和运行下列代码,出现的结果将是 ( ) public class MyAdd extends Thread{ static int total = 10; int n;

public MyAdd(int n) { this.n=n; }

public void run() { try{

sleep(n);

total=total+n;

System.out.println(total); }

catch(Exception e){

System.out.println(“EXCEPTION!”); }

}

public static void main(String[] args) { MyAdd t1 = new MyAdd(3000);

第 9 页 共 48 页

MyAdd t2 = new MyAdd(1000); t1.start(); t2.start(); } }

A、打印 1010, 4010 B、 打印 3010, 4010 C、打印 1010, 3010 D、 打印 3010, 1010

41、若编译和运行下列代码,出现的结果将是___________? ( ) public class MyThread implements Runnable { String myString = \ public void run() {

this.myString = \ }

public static void main(String[] args) { MyThread t = new MyThread(); new Thread(t).start(); for (int i=0; i < 10; i++)

System.out.print(t.myString); } }

A、打印 yes yes yes yes yes yes yes yes yes yes B、 打印 no no no no no no no no no no

C、打印 yes no yes no yes no yes no yes no D、 打印结果无法确定

42、下列说法哪个是不正确的? ( ) A、一个组件可以注册多个事件监听器 B、一个监听器只能监听一个组件 C、一个组件可以引发多种事件

D、一个监听器可以监听处理多种事件

43、Java不支持何种继承方式?( ) A) 多重继承 B) 单重继承

C) 多接口实现 D) 单接口实现

44、下面说法错误的是( )

A) 单击CheckBox (复选框)产生ItemEvent事件,并由ItemListener处理。 B) 处理Button和TextField事件监听器接口都是ActionListener。 C) 一个面板(Panel) 可以加入到另一个面板(Panel)中。

D) 在BorderLayout中,添加到NORTH区的两个按钮将并排显示。

45、下列说法错误的是: ( ) A) TCP是面向连接的协议,而UDP是无连接的协议。 B) 数据报传输是可靠的,可以保证数据包按顺序到达。

C) Socket是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。 D) 端口(port)并不是机器上一个物理上存在的场所,而是一种软件抽象。

46、下列语句错误的是: ( )

第 10 页 共 48 页

A) ServerSocket svrsoc= new ServerSocket(8000);

B) URL urlBase=new URL(“http://www. zjut.edu.cn/”) ; C) File inFile = new File(“C:/ test.txt”);

D) BufferedReader br = new BufferedReader(“C:/ test.txt”);

47、下面说法错误的是: ( ) A) 单击JCheckBox (复选框)产生ItemEvent事件,并由ItemListener处理。 B) 处理JButton和JTextField事件监听器接口都是ActionListener。 C) 处理鼠标事件的事件监听器接口只有MouseListener。

D) 在JTextField和JPasswordField中输入数据后按Enter键会激发一个事件。 48、下列关于接口和抽象类的说法不正确的是?( ) A) 接口也有构造方法

B) 实现接口时,需对接口中的所有方法都要实现 C) 抽象类也有构造方法 D) 抽象类可以派生出子类

49、下列说法哪个是不正确的?( )

A)一个面板(Jpanel) 能被加入到另一个面板(Jpanel)中 B)一个监听器只能监听一个组件

C)Frame,Panel,Applet都属于容器组件。

D)Button和TextField都可用ActionListener接口实现事件处理 50、对于下列代码: String str1=\String str2=\

String str3=new String(\

StringBuffer str4=new StringBuffer(\以下表达式的值为true的是( ) A) str1= =str2; B) str1= =str3; C) str2= =str3; D) str3= =str4; 51、对于下列代码:

public class SupperClass {

public int sum( int a, int b) { return a+b; } }

class SubClass extends SupperClass { }

下述哪个方法可以加入类SubClass? ( ) A) int sum ( int a, int b ){ return a+b;} B) public void sum (int a, int b ){ return ;} C) public float sum ( int a, int b){ return a+b;} D) public int sum ( int a, int b ) { return a+b;}

52、为AB类的一个无形式参数无返回值的方法method书写方法头,使得用类名AB作为前缀就可以调用它,该方法头的形式为( )

A) static void method( ) B) public void method( )

第 11 页 共 48 页

C) final void method( ) D) abstract void method( ) 53、关于JDBC访问数据库的说法错误的是: ( ) A) 建立数据库连接时,必须加载驱动程序,可采用Class.forName()实现

B) 用于建立与某个数据源的连接可采用DriverManager类的getConnection方法 C) 建立数据库连接时,必须要进行异常处理

D) JDBC中查询语句的执行方法必须采用Statement类实现

54、将组件垂直摆放在一列或水平摆放在一行中的布局管理器是 ( ) A) BorderLayout B) FlowLayout C) CardLayout D)BoxLayout 55、下列有关Java Swing组件说法正确的是: ( ) A) 创建一个JFrame时,必须创建至少一个菜单,并将它加入JFrame中。 B) JTextArea的文本总是只读的。

C) 加载swing组件包的语句是“import java.swing.*; ” 。 D) 在JFrame中添加组件时不能直接用add方法。

56、下列说法错误的是: ( ) A) 程序员必须创建System.in、System.out和System.err对象。 B) 在随机存取文件中查找指定记录时不必检查每一条记录。 C) seek方法必须以文件头为基准进行查找。 D) 计算机做的所有工作最终是对0和1的处理。

57、下列说法错误的是: ( ) A)TCP是面向连接的协议,而UDP是无连接的协议。 B)数据报传输是可靠的,可以保证包按顺序到达。 C)URL代表的统一资源定位符一共包括五个部分

D)Socket和ServerSocket分别表示连接的Client端和Server端

58、下列语句错误的是: ( ) A)ServerSocket svrsoc= ServerSocket(8000);

B)URL urlBase=new URL(“http://www. zjut.edu.cn/”); C)File inFile = new File(“C:/ test.txt”);

D)BufferedReader br = new BufferedReader(“C:/ test.txt”);

59、下面说法错误的是: ( ) A) 单击JCheckBox (复选框)产生ItemEvent事件,并由ItemListener处理。 B) 处理JButton和JTextField事件监听器接口都是ActionListener。 C) 处理鼠标事件的事件监听器接口只有MouseListener。

D) 在JTextField和JPasswordField中输入数据后按Enter键会激发一个事件。60、对于下列代码:

public class Parent {

public int addValue( int a, int b) { int s; s = a+b; return s; } }

class Child extends Parent { }

下述哪些方法可以加入类Child? ( )

第 12 页 共 48 页

A) int addValue( int a, int b ){// do something...}

B) public void addValue (int a, int b ){// do something...} C) public int addValue( int a ){// do something...}

D) public int addValue( int a, int b ) {//do something...} 61、对于下列代码: 1) class Person {

2) public void printValue(int i, int j) {//... } 3) public void printValue(int i){//... } 4) }

5) public class Teacher extends Person { 6) public void printValue() {//... } 7) public void printValue(int i) {//...} 8) public static void main(String args[]){ 9) Person t = new Teacher(); 10) t.printValue(10); 11) }

第10行语句将调用哪行语句? ( ) A) line 2 B) line 3 C) line 6 D) line 7

62、编译和运行下面的应用程序,并在命令行界面输入12345,则回车后屏幕输出的结果是( )。

public class A {

public static void main(String args[]) throws IOException{ BufferedReader buf=new BufferedReader(

new InputStreamReader(System.in)); String str=buf.readLine();

int x=Integer.parseInt(str); System.out.println(x00); } }

A) 345 B)5 C) 123 D) 12345 63、以下程序段输出结果的是( )。 public class A implements B {

public static void main(String args[]) { int i;

A c1 = new A(); i= c1.k;

System.out.println(\ } }

interface B { int k = 10; }

A) i=0 B) i=10 C) 程序有编译错误 D) i=true 64、下面的程序段执行后输出的结果是( )

StringBuffer buf=new StringBuffer(\

buf.replace(0,7,”Hangzhou”)

System.out.println(buf.toString());

第 13 页 共 48 页

A) Hangzhou2008 B) Hangzhoug2008 C)Hangzhou008 D) Beijing2008 65、应用程序的main方法中有以下语句,则输出的结果是 ( )。

String s1=\

int b1=s1.compareTo (s2); System.out.println(b1);

A) false B)-32 C) 32 D) 0 66、下面的程序段的功能是( )。

File file1=new File(\ file1.mkdir();

A)在当前目录下生成子目录:\\xxx\\yyy B)生成目录: e:\\xxx\\yyy C)在当前目录下生成文件xxx.yyy D)以上说法都不对

67、网络资源定位器对应于Java的类java.net.URL,通过其成员方法( )获得端口。 A) getHost() B) getProtocol() C) getPort() D) getRef()

68、下面关于Java中线程的说法不正确的是( )?

A)调用join()方法可能抛出异常InterruptedException。 B)sleep()方法是Thread类的静态方法。

C)调用Thread类的sleep()方法可终止一个线程对象。 D)线程启动后执行的代码放在其run方法中。 69、给Java线程设定优先级的成员方法是( )。 A) getPriority() B) setPriority() C) getTread() D) setTread()

70、编写小应用程序(Applet)需要( )源程序文件和( )文本文件。 A) HTML、Java B) Java、HTML C) Applet、txt D) Java、txt

71、JTextArea实现了可以处理( )文本信息的文本框,但其不能自动进行( )处理。 a) 单行、滚屏 b) 多行、编辑 c) 多行、滚屏 d) 单行、编辑

72、常规菜单是由( )、( )和菜单项组成。 a) JMenuItem、JCheckBoxMenuItem b) JButton、JRadioButton c) JPopupMenu、JMenuItem d) JMenuBar、JMenu

73、GUI组件的左上角坐标是( ), 一个坐标系由X坐标和( )坐标构成。 a) (1,1)、Y b) (0,1)、X c) (0,0)、Y d) (1,0)、X

第 14 页 共 48 页

74、Color类定义了颜色( )和颜色( ),用于控制Java程序中的颜色。 a) 常量、内容 b) 常量、方法 c) 方法、对象 d) 方法、数据

75、Swing组件是( )组件。AWT组件由于捆绑在本地平台上,所以称为( )组件。 A)重量级、轻量级 B)高级、低级 C)低级、高级 D)轻量级、重量级

76、JFrame和JApplet不是( )的子类,因此它们没有( )方法。 A)JComponent、paintComponent B)JComponent、paint

C)JApplet、paintComponent D)JApplet、paint

77、程序员将可能发生异常的代码放在( )块中,后面紧跟着一个或多个( )块。 a) catch、try b) try、catch c) try、exception d) exception、try

78、RandomAccessFile类的( )方法可用于从指定流读取整数。 a) readLine b) readByte c) readInteger d) readInt

79、ServerSocket构造函数的第( )个参数指定了可以等待连接到服务器的最多客户机数目。

a) 1 b) 3 c) 4 d) 2

80、FlowLayout布局管理器按照组件加入容器的次序从( )到( )排列组件。 a) 上、下 b) 右、左 c) 左、右 d) 前、后

四、程序阅读题

1、阅读下面的程序:

① public class Test{

② public static void main(String[] a){ ③ int i = Integer.parseInt(a[0]); ④ switch (i) {

⑤ case 1:System.out.println(\⑥ case 2:System.out.println(\⑦ case 3:System.out.println(\⑧ case 4:System.out.println(\⑨ } ⑩ }

第 15 页 共 48 页

? }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,用java Test 2 运行得到的输出结果是什么?

2、阅读下面的程序:

1) public class Test{

2) public static void main(String[ ] args) { 3) int x,y=2,i=0,j=0;

4) if(args.length<2) System.exit(-1); 5) x = Integer.parseInt(args[1]); 6) switch(x){

7) case 2:switch(y){

8) case 1:i++;break; 9) case 2:j++;break; 10) default:i++;j++; 11) }

12) case 3:i++;j++;break; 13) default:i++;j++; 14) }

15) System.out.println(\16) System.out.println(\17) } 18) }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,用java Test 1 2 3 运行得到的运行结果是什么?

3、写出下列程序代码的运行结果: public class Test {

public static void main(String args[]) { int x = 10, y = 0; for(int i=2;i

switch(y) {

case 0: System.out.print(0);

case 1: System.out.print(1);break; case 2: System.out.print(2); case 3: System.out.print(3);break; default: System.out.print(4); } } }

4、写出下列程序代码的运行结果:

第 16 页 共 48 页

class Person{

public Person(){

System.out.println(\ }

public Person(String s){ this();

System.out.println(\ } }

public class Who extends Person{ public Who(){

this(\ }

public Who(String s){ super(s);

System.out.println(\ }

public static void main(String args[]){ Who w = new Who(\ } }

5、阅读下面的程序,程序保存为Test.java:

1) public class Test 2) {

3) short mValue;

4) public static void main(String[] args) 5) {

6) int a = 32; 7) int b = 56;

8) Test os = new Test(a+b); 9) os.Show( ); 10) }

11) protected Test(short aValue) { mValue = aValue; } 12) public void Show( ) { System.out.println(mValue); } 13) }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?

6、阅读下面的程序:

class test {

public static void main(String[] args)

第 17 页 共 48 页

{

int i = 1; int All = 0; for (;i<=10;i++) {

if (i%6==0) break;

if(i%2==0) {i=i+2;continue;} All = All + i; }

System.out.println(All); } }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么? 6

7、阅读下面的程序:

1) public class test 2) {

3) public static void main(String argv[]) 4) {

5) Bird b = new Bird(); 6) b.Fly(3); 7) } 8) }

9) class Bird{

10) static int Type = 2;

11) private void Fly(int an_Type){ 12) Type = an_Type;

13) System.out.println(\14) } 15) }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?

8、写出下列程序代码的运行结果: public class Example{

String str=new String(\ char ch[]={'J','a','v', 'a'};

public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.println(ex.str);

System.out.println(new String(ex.ch)); }

第 18 页 共 48 页

}

public void change(String str,char ch[]){

str=\ch[0]= 'Y'; }

9、阅读下面的程序TestMonth.java: public class TestMonth{

public static void main(String []args){ try{

int month=Integer.parseInt(args[0]); if(month<0||month>12){

throw new ArithmeticException(\没有\月份!\ }

System.out.println(\您输入的月份为\月份\ }catch(ArrayIndexOutOfBoundsException e){ System.out.println(\请输入月份!\ }catch(ArithmeticException e){

System.out.println(\捕获ArithmeticException异常\ System.out.println(e.toString()); } } }

已知ArrayIndexOutOfBoundsException和ArithmeticException都是java.lang.*下的异常类,编译TestMonth.java后,用java TestMonth 13的运行结果是什么?

10、写出下列程序代码的运行结果:

class userException extends Exception{ userException(){}

userException(String str){ super(str); } }

class MyException {

final static int ARRAY_MAX_LENGTH=10; void judge(int []a){ try{

if(a.length

System.out.println(\数组的长度没有超过规定的最大值!\ } else{

throw new userException(\数组可能越界!\ }

}catch(userException e){

第 19 页 共 48 页

System.out.println(e.toString()); }

finally{

System.out.println(\退出返回!\ } }

public static void main(String agrs[]){ try{

int a[]=new int[10];

MyException myE=new MyException(); myE.judge(a);

}catch(Exception e){

System.out.println(e.toString()); } } }

11、阅读下面代码片段,写出输出结果。(如果代码有错,请写出错误原因) public class ExceptionExample {

public static void main(String[] args) { int a = 8; int b = 2; int c = 0; try{

c = a/(b-2);

System.out.println(\计算结果:\

}catch(ArithmeticException arithmeticException) { System.out.println(\捕获了一个零除异常\ }catch(Exception exception) {

System.out.println(\捕获了一个异常\ } } }

12、阅读下面代码片段,找出其中的错误并改正其中的错误。 import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class ButtonTest extends JFrame { private JButton plainButton, fancyButton; public ButtonTest() {

super( \

Container container = getContentPane(); container.setLayout( new FlowLayout() );

第 20 页 共 48 页

plainButton = new JButton( \ container.put( plainButton );

fancyButton = new JButton( \ container.put( fancyButton );

ButtonHandler handler = new ButtonHandler(); fancyButton.addItemListener( handler ); plainButton.addItemListener( handler ); setSize( 275, 100 ); setVisible( true ); }

public static void main( String[] args ) {

ButtonTest application = new ButtonTest();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); }

private class ButtonHandler implements ActionListener {

public void itemStateChanged( ActionEvent event ) {

JOptionPane.showMessageDialog( null, \

event.getActionCommand() );

} } }

13、写出下列程序代码的运行结果:

1) class MinusException extends Exception { 2) int number;

3) public MinusException (String msg, int i) { 4) super(msg);

5) this.number = i; 6) } 7) } 8)

9) class Salary {

10) private String name; 11) private int salary;

12) public Salary(String n, int s ) throws MinusException { 13) this.name=n;

14) if (s<0) throw new MinusException(\工资不能为负!\15) this.salary=s; 16) }

17) public void print() {

18) System.out.println(name+\的工资为\元。\19) } 20) } 21)

第 21 页 共 48 页

22) class TestSalary {

23) public static void main(String [] args) { 24) try {

25) Salary s1=new Salary(“张三”,1000); 26) s1.print( );

27) Salary s2=new Salary(“李四”,-10); 28) s2.print( ); 29) }

30) catch(MinusException e) {

31) System.out.println(\异常:\32) } 33) } 34) }

14、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。 1. public class Outer {

2. private int size = 1; 3.

4. public class Inner{ 5. private int size=2;

6. public void doStuff(int size){ 7. size++;

8. this.size++;

9. Outer.this.size++;

10. System.out.println(\

11. System.out.println(\12. System.out.println(\of the Outer class: \13. } 14. } 15.

16. Inner i=new Inner(); 17.

18. public void increaseSize(int s){ 19. i.doStuff(s); 20. } 21. 22.

23. public static void main(String[] a){ 24. Outer outer=new Outer(); 25. outer.increaseSize(10); 26. } 27. }

15、阅读下面的程序代码,写出程序运行的打印结果。

第 22 页 共 48 页

1. class ParentClass{ 2. int x=0;

3. int sum(int a,int b, int c){ 4. return a+b+c; 5. }

6. int sum(int a,int b){ 7. return a+b; 8. } 9. }

10. class ChildClass extends ParentClass{ 11. public ChildClass( ) {x=10;} 12. int sum(int a,int b){ 13. return a+b+1; 14. } 15. }

16. class Test{

17. public static void main(String args[]){ 18. ParentClass p=new ChildClass();

19. System.out.println(p.sum(5,5,5)); 20. System.out.println(p.sum(5,5)); 21. System.out.println(p.x); 22. } 23. }

16、阅读下面的程序,修改程序中错误的地方:

1) public class Test implements Runnable { 2) String str[]=new String[10]; 3) static {

4) for (int i = 0; i < str.length; i++) { 5) str[i]=i+”-”; 6) } 7) }

8) public void run() { 9) try {

10) for (int i = 0; i < str.length; i++) { 11) sleep(1000);

12) System.out.print(str[i]); 13) }

14) } catch (InterruptedException e) { 15) e.printStackTrace(); 16) } 17) }

18) public static void main(String args[]) { 19) Test t = new Test();

第 23 页 共 48 页

20) t.run(); 21) } 22) }

17、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。

1) class TestString{

2) public void stringReplace (String text) { 3) text = text.replace('j' , 'i'); 4) text=text+\5) }

6) public void bufferReplace (StringBuffer text) { 7) text.setCharAt(0,'i'); 8) text = text.append(\9) }

10) public void change(char ch[]){ 11) ch[0]= 'Y'; 12) }

13) public static void main(String args[]){ 14) String str1=\

15) StringBuffer str2=new StringBuffer(\16) char ch[]={'j','a','v','a'}; 17) TestString t=new TestString(); 18) t.change(ch);

19) t.stringReplace (str1); 20) t.bufferReplace (str2); 21) System.out.println(str1);

22) System.out.println(str2.toString()); 23) System.out.println (new String(ch)); 24) } 25) }

18、阅读下面的程序代码,判断18~27行(带划线部分)各语句编译是否通过,如果编译通过,直接写出该行的打印结果。

1. class TestString{

2. public static String stringReplace (String text) { 3. text = text.replace('j' , 'i'); 4. text=text+\5. return text; 6. }

7. public static StringBuffer bufferReplace (StringBuffer text) { 8. text.setCharAt(0,'i'); 9. text = text.append(\10. return text; 11. }

第 24 页 共 48 页

12. public static void main(String args[]){ 13. String str1=\14. String str2=\

15. String str3=\16. String str4=new String(\

17. StringBuffer str5=new StringBuffer(\

18. System.out.println(str1= =str2); 19. System.out.println(str2= =str3); 20. System.out.println(str2= =str4); 21. System.out.println(str4= =str5); 22. System.out.println(str3.equals(str4)); 23. System.out.println(str4.equals(str5)); 24. System.out.println (stringReplace (str1)); 25. System.out.println(bufferReplace (str5)); 26. System.out.println (str1); 27. System.out.println(str5); 28. } 29. }

19、阅读下面的程序,修改程序中错误的地方:

23) public class Test implements Runnable { 24) String str[]=new String[10];

25) for (int i = 0; i < str.length(); i++) { 26) str[i]=i+”-”; 27) }

28) public void run() { 29) try {

30) for (int i = 0; i < str.length(); i++) { 31) sleep(1000);

32) System.out.print(str[i]); 33) }

34) } catch (InterruptedException e) { 35) e.printStackTrace(); 36) } 37) }

38) public static void main(String args[]) { 39) Test t = new Test(); 40) t.run(); 41) } 42) }

20、阅读下面的Applet程序AppletDemo.java: import java.applet.Applet; import java.awt.Graphics;

第 25 页 共 48 页

public class AppletDemo extends Applet { StringBuffer buffer; public void init() {

buffer = new StringBuffer(); addItem(\初始化?\ }

public void start() {

addItem(\启动... \ }

public void stop() {

addItem(\停止运行... \ }

public void destroy() { addItem(\准备卸载...\ }

void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); }

public void paint(Graphics g) {

g.drawString(buffer.toString(), 5, 15); } }

编译AppletDemo.java后,将AppletDemo.class嵌入HTML文件中,然后用AppletViewer命令打开该HTML文件,问:

(1)小应用程序在加载阶段,在屏幕上打印结果是什么? (2)关闭这个小应用程序时,在屏幕上打印结果是什么?

21、阅读下面的程序:

1) abstract class Base{

2) abstract public void myfunc(); 3) public void another(){

4) System.out.println(\5) } 6) }

7) public class Abs extends Base{

8) public static void main(String argv[]){ 9) Base b = new Abs(); 10) b.another(); 11) }

12) public void myfunc(){

13) System.out.println(\14) }

第 26 页 共 48 页

15) public void another(){ 16) myfunc(); 17) } 18) }

以上程序经编译后,运行结果是什么?

22、阅读下面程序代码,写出程序运行的输出结果。

1) class TestException{ 2) public static void main(String []args){ 3) try{ 4) callMethod(); 5) }catch(Exception e){ 6) System.out.print('a'); 7) } 8) System.out.println('b'); 9) } 10) static void createException(){ 11) throw new ArrayIndexOutOfBoundsException(); 12) } 13) static void callMethod(){ 14) try{ 15) createException(); 16) System.out.print('c'); 17) }catch(ArrayIndexOutOfBoundsException e){ 18) System.out.print('d'); 19) } 20) finally{ 21) System.out.print('e'); 22) } 23) System.out.print('f'); 24) } 25) }

23、阅读下面的程序:

1) class Super{

2) public int i=0; 3) public Super(){ 4) i=1; 5) } 6) }

7) public class Sub extends Super{ 8) public Sub(){ 9) i=2; 10) }

第 27 页 共 48 页

11) public static void main(String args[]){ 12) Sub s=new Sub();

13) System.out.println(s.i); 14) } 15) }

上面的程序经编译后,运行结果是什么?

24、阅读下面的程序,程序保存为Test.java:

1) public class Test {

2) public static void main(String[ ] args) { 3) int index=0;

4) while (index<=100) { 5) index+=10; 6) if (index==40) 7) break;

8) System.out.println(\9) } 10) } 11) }

上面的程序经编译,运行后输出的结果是什么?

25、阅读下面的程序:

1) class ValHold{

2) public int i = 10; 3) }

4) public class ObParm{

5) public static void main(String argv[]){ 6) ObParm o = new ObParm(); 7) o.amethod(); 8) }

9) public void amethod(){ 10) int i = 99;

11) ValHold v = new ValHold(); 12) v.i = 30; 13) another(v,i);

14) System.out.print(v.i); 15) }

16) public void another(ValHold v, int i){ 17) i = 0; 18) v.i = 20;

19) ValHold vh = new ValHold(); 20) v = vh;

21) System.out.print(v.i); 22) System.out.print(i);

第 28 页 共 48 页

23) } 24) }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?

26、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。 class StaticTest {

static int x = 1; int y;

StaticTest() {

y++; }

public static void main(String args[]) { StaticTest st = new StaticTest(); System.out.println(\

System.out.println(\ st = new StaticTest();

System.out.println(\

System.out.println(\}

static { x++; } }

27、阅读下面的程序Test.java:

1) import java.io.*; 2) public class Test{

3) public static void main(String argv[]){ 4) Test t = new Test();

5) System.out.println(t.fliton()); 6) }

7) public int fliton(){ 8) try{

9) FileInputStream din = new FileInputStream(\10) din.read();

11) }catch(IOException ioe){

12) System.out.println(\13) return -1; 14) }

15) finally{

16) System.out.println(\17) }

18) return 0;

第 29 页 共 48 页

19) } 20) }

如果文件test.txt与Test.java在同一个目录下,test.txt中仅有一行字符串“hello world!”,上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,运行结果是什么?

28、仔细阅读下面的程序代码,写出程序运行的输出结果。 class Test1 {

private int i = 1; public class Test11{ private int i = 2;

public void methodI(int i) {

i++;

this.i++;

Test1.this.i++;

System.out.println(\ System.out.println(\

System.out.println(\ } }

Test11 ic=new Test11(); public void increaseI(int k) {

ic.methodI(k); }

public static void main(String [] args) {

Test1 oc=new Test1(); oc.increaseI(20); } }

29、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。 public class Test {

public static void main(String args[]){ int [ ] a = {10, 20, 30, 40, 50}; int s =0;

for (int c: a) s +=c;

System.out.print(s ); }

第 30 页 共 48 页

}

30、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。 class myException extends Exception{} public class Sample{ public void foo(){ try{

System.out.print(1); bar();

System.out.print(2); }catch(myException e){ System.out.print(3); } finally{

System.out.print(4); } }

public void bar() throws myException{ throw new myException(); }

public static void main(String args[]){ Sample s=new Sample(); s.foo(); } }

31、请简要画出编译运行下面程序的界面效果图。 import java.awt.*; import javax.swing.*;

public class ColorSelect extends JFrame { private JButton ok, cancel;

private JCheckBox background, foreground; private JComboBox colorList; private JPanel panel, panel2; private Container c; public ColorSelect(){

super( \ c=getContentPane();

c.setLayout(new BorderLayout());

colorList = new JComboBox(); colorList.addItem( \

c.add( colorList, BorderLayout.NORTH ); panel = new JPanel();

第 31 页 共 48 页

background = new JCheckBox( \ foreground = new JCheckBox( \ panel.add( background ); panel.add( foreground );

c.add( panel, BorderLayout.CENTER ); ok = new JButton( \

cancel = new JButton( \ panel2 = new JPanel(); panel2.add( ok ); panel2.add( cancel );

c.add( panel2, BorderLayout.SOUTH ); setSize( 300, 125 ); setVisible(true); }

public static void main ( String args[] ){ ColorSelect app = new ColorSelect();

app.setDefaultCloseOperation( EXIT_ON_CLOSE ); } }

32、仔细阅读下面的程序,简单的画出GUI的界面 import java.awt.*;

public class Test extends Frame { public Test() { super(\

setLayout(new BorderLayout());

add(new Button(\ add(new Button(\ add(new Button(\ add(new Button(\ add(new Button(\ }

public static void main(String args[]){ Test t=new Test(); t.pack(); t.show(); } }

33、仔细阅读下面的程序,写出程序的执行顺序(写出编号): public class UsingExceptions {

public static void main( String args[] ){ try{

method1(); // 1

第 32 页 共 48 页

}catch(Exception e){

System.err.println(e.getMessage()); // 2 }

finally{

System.out.println(\ } }

public static void method1() throws Exception { method2(); //4 }

public static void method2() throws Exception { method3(); //5 }

public static void method3() throws Exception{

throw new Exception( \ } }

34、阅读下面的程序:

public class Timer extends Thread{ int time=0;

public Timer(int time) { this.time=time; }

public void run(){ try{

for(int i=0;i

System.out.print (i+“-”); } }

catch(Exception e) {

System.out.println(e.toString()); } }

public static void main(String args[]){ Timer timer=new Timer(10); timer.start(); } }

以上程序经编译后运行结果是:

五、程序填空题

1、阅读下面的程序,写出带划线语句的注释,并写出运行结果。

第 33 页 共 48 页

import java.awt.*; import javax.swing.*;

public class Test {// 继承JFrame private int screenOffset = 80; public Test(){

super( \ ; // 设置JFrame的大小为300*300 show(); // }

public void paint( Graphics g ){

for ( int i = 1; i <= 8; i++ ) {

int origin = screenOffset + 80 - i * 10; g.drawOval(origin, origin, i * 20, i * 20); } }

public static void main( String args[] ){ Test application = new Test();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); } }

2、阅读下面的程序,写出带划线语句或注释,并写出该程序的作用: import java.io.*; public class Test {

public static void main(String args[]) { scanFiles(\ }

public static void scanFiles(String path) { if (path == null) return;

File f = new File(path); // if (!f.exists()) return;

if (f.isFile()) // System.out.println(f.getAbsolutePath()); else {

File dir[] = f.listFiles(); for (int i = 0; i < dir.length; i++)

scanFiles(dir[i].getAbsolutePath());// } } }

3、仔细阅读下面的程序代码,请将划线上①~⑤的语句补充完整。

第 34 页 共 48 页

abstract class Person{

private String name;

public Person(String n){ name = n; }

public ____①________ String getDescription(); public ____②_________ (){ return name; } }

class Student ____③ _________ Person{

private String major;

public Student(String n, String m){ super(n); major = m; }

public String ____④_________(){ return \学生专业是:\ } }

public class TestPerson{

public static void main(____⑤________){

Person p = new Student(\王甜甜\计算机科学\

System.out.println(p.getName() + \ } }

4、阅读下面的程序MyAdd.java,填写划线部分的语句或注释,并写出程序执行结果。 public class MyAdd { //继承线程类 static int total = 10; int n;

public MyAdd(int n){

this.n=n; }

public void run() { try{

sleep(n); //含义是: total=total+n;

第 35 页 共 48 页

System.out.println(total); }

catch(Exception e){

System.out.println(“EXCEPTION!”); }

}

public static void main(String[] args) { MyAdd t1 = new MyAdd(3000);

; //启动线程t1 } }

5、阅读下面的程序Test.java,先填写空格的内容,然后写出运行结果:

21) import java.io.*; 22) public class Test{

23) public static void main(String argv[]){

24) ; //创建Test对象,对象名为t 25) System.out.println(t.fliton()); 26) }

27) public int fliton(){ 28) try{

//第9行的含义是: 29) FileInputStream din = new FileInputStream(\30) din.read();

31) }catch(IOException ioe){ //第11行的含义是: 32) System.out.println(\33) return -1; 34) }

35) finally{

36) System.out.println(\37) }

38) return 0; 39) } 40) }

如果文件test.txt与Test.java在同一个目录下,test.txt中仅有一行字符串“hello world!”,运行结果是什么?

6、阅读下面的程序代码,根据注释要求补充、完成代码(划线是需要补充的地方),最后简要说明该程序的功能。

1. ___________________{ //声明一个接口,接口名为Area 2. public double CalsulateArea(); 3. }

4. class MyCircle implements Area{ 5. double r;

第 36 页 共 48 页

6. public MyCircle(double r){ 7. this.r=r; 8. }

9. public double CalsulateArea(){ 10. return Math.PI*r*r; 11. } 12. }

13. class MyRectangle implements Area{ 14. double width,height;

15. public MyRectangle(double w,double h){ 16. width=w; 17. height=h; 18. 19. }

20. public double CalsulateArea(){ 21. return width*height; 22. } 23. }

24. class TestArea{

25. public static void main(String []args){

26. //创建MyCircle的对象,对象名为c 27. System.out.println(\28. //创建MyRectangle的对象,对象名为r 29. System.out.println(\area of the Rectangle is \30. 31. } 32. }

7、仔细阅读下面的程序代码,请将划线上①~④的语句补充完整。 import java.awt.*;

import java.awt.event.*;

public class MyFrameCanExit extends Frame implements ① { public MyFrameCanExit(String str){ super(str); }

public void windowClosing( ② e) { System.exit(0);

}

public void windowClosed(WindowEvent e) { } public void windowOpened(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowActivated(WindowEvent e) { }

第 37 页 共 48 页

public void windowDeactivated(WindowEvent e) { }

public static void main(String args[ ]){

MyFrameCanExit fr = new MyFrameCanExit(\

fr. ③ (fr); //注册窗口事件监听器。 fr. ④ (200,200); fr.setVisible(true); }

8、下面是一个支持多个客户端交互的程序,请根据注释要求补充、完成代码: import java.io.*;

______________________ //加载网络API包 public class ServerThread extends Thread{ Socket socket=null; int clientnum;

public ServerThread(Socket socket,int num) { this.socket=socket; clientnum=num+1; }

public void run() { try{

String line;

InputStream in=__________________________//得到socket的输入流 BufferedReader is=new BufferedReader(new InputStreamReader(in)); PrintWriter os=new PrintWriter(socket.getOutputStream());

//由系统标准输入设备构造BufferedReader对象 BufferedReader sin=new BufferedReader

(_______________________________________);

System.out.println(\ line=sin.readLine();

while(!line.equals(\ os.println(line);

// 刷新输出流,使Client马上收到该字符串 ______________________________

System.out.println(\

System.out.println(\ line=sin.readLine(); }

os.close();//关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket对象 }catch(Exception e){

第 38 页 共 48 页

System.out.println(\ } } }

9、阅读下面代码片段,根据注释要求补充、完成代码。(带*号行是需要补充的地方) import java.io.*; import java.net.*;

public class SocketExample {

public static void main(String[] args) { ServerSocket server; Socket socket;

ObjectOutputStream output; ObjectInputStream input; try{

//创建一个端口号为6000,可有50个客户同时连接的服务器流套接字 * socket = server.accept();

//创建一个Object输出流用来向客户发送数据

* output.flush();

//创建一个Object输入流用来接收客户发送的数据

* //关闭输出输入流

* * socket.close();

}catch(IOException ioException) {

System.out.println(\捕获一个I/O异常\ } } }

10、通过TCP协议方式,定义一个服务器端,端口为5000,要求可以同时连接多个客户端,并且每个客户端在休眠10秒钟之后退出连接;将下面的程序补齐:

import java.net.*; import java.io.*;

public class ServerExample implements { private Socket m_socket; private int m_id;

public (Socket s, int id) { m_socket= s; m_id= id; }

public void {

第 39 页 共 48 页

try { . sleep(10000);

System.out.println(\ m_socket.close();

} catch (Exception e) {} }

public static void main(String args[]){ int n= 1;

server= null; try{

server= new (5000);

System.out.println( \ }

catch (IOException e){} while (true){ try{

System.out.println(\ s= server.accept( );

ServerExample t=new ServerExample(s, n++); th =new Thread( ); .start( ); }

catch (IOException e){} } // End of loop: while } // End of method: main }

11、下面是一个Java Applet的程序代码和相应的html文件,若Applet的.class文件和html文件在同一个目录,请根据注释要求补充、完成代码(划线是需要补充的地方)。

//加载Applet类的包 import java.awt.*;

public class Welcome extends Applet{

_______________________________{ //paint方法说明

//在(25,25)位置画出“Welcome!” } }

Welcome

//包含上述Applet,高200宽300像素

第 40 页 共 48 页

五、程序改错题

1、阅读下面的程序,修改程序中编译错误的地方(提示:共五处错误)

interface Shape{ double PI;

public double area( );

public double perimeter( ); }

class Cycle extends Shape{ private double r;

public Cycle(double r){ this.r=r; }

double area( ){

System.out.println(PI*r*r); } }

public class Test{

public static void main(String args[]){ Cycle c=new Cycle(1.5);

System.out.println(\面积为:\ } }

2、阅读下面的程序,修改程序中错误的地方(提示:共三处错误)

1. class Person{ 2. String name; 3. int age; 4. String sex;

5. public Person(String name,int age,String sex){ 6. this.name=name; 7. this.age=age; 8. this.sex=sex; 9. }

10. public void toString(){

11. return \12. } 13. }

14. public class TestPerson{

15. public static void main(String args[]){ 16. Person p=new Person(); 17. p.name=\张三\18. p.age=20; 19. p.sex=\男\

第 41 页 共 48 页

20. System.out.println(Person.tostring()); 21. } 22. }

3、阅读下面的程序,修改程序中错误的地方(提示:共三处错误)

1. public class MyThread implements Runnable { 2. String str[]=new String[10]; 3. public MyThread(){

4. for (int i = 0; i < str.length(); i++) { 5. str[i]=i+\6. } 7. }

8. public void start () { 9. try {

10. for (int i = 0; i < str.length; i++) { 11. sleep(1000);

12. System.out.print(str[i]); 13. }

14. } catch (InterruptedException e) { 15. e.printStackTrace(); 16. } 17. }

18. public static void main(String args[]) { 19. Thread t=new Thread(new MyThread ()); 20. t.start(); 21. } 22. }

六、编程题

1、用for语句实现下面的程序ForDemo.java:从10~100以内能被2整数但不能被3整除的整数,要求每行按10个数(数与数之间有一个空格间隔)的形式对其输出。

2、编写一个getY(double t)方法,返回值按下列函数计算:

2

t-1 0≤t<1 t-2·t-2 1≤t<3 y= t-t·sint 3≤t<5 t+1 5≤t<7 t-1 其它

3、编写一个java应用程序,从键盘输入x,利用下列台劳公式计算cos(x)的值,并输出(要求精确到0.000001)。台劳公式为:

2468

cos(x)=1-x/2! + x/4! -x/6! + x/8! - ??

4、定义接口AreaInterface,该接口有一个双精度浮点型的变量pai,它的值等于Math.PI;

第 42 页 共 48 页

23

含有一个求面积的方法 double area();

5、根据以下的设计要求编写java源代码。(15分) 类名: Student

变量(访问权限均为private): name(String) //姓名 age(int) //年龄 方法:

构造方法(没有参数,设置姓名为“无名氏”,年龄为20)

setName(有一个名为name的String型参数,将name的值设为这个新值), getName (没有参数,返回姓名)

setAge(有一个名为age的int型参数,将age的值设为这个新值), getAge (没有参数,返回年龄)

isSameAge(有一个参数s,是另一个Student对象的引用,如果两个Student对象的age相同,则返回true,否则返回false)

6、请为管理学校中教师的工作证和学生的学生证设计一个类体系结构,尽可能保证代码的重用率。假设工作证包括编号、姓名、姓名、出生年月、部门、职务和签发工作日期;学生证包括编号、姓名、姓名、出生年月、学院、专业、入校时间及每学年的注册信息等。 7、定义一个Rectangle(长方形)实现AreaInterface接口,该类有两个private访问权限的双精度浮点型变量x(长)和y(宽);定义一个public访问权限的构造方法,用来给类变量赋值;实现area()方法得到长方形的面积;定义toString()方法,返回一段字符串信息,内容如下格式:“该长方形面积为:”+面积;

定义一个TestArea类,在他的main()方法中;创建一个Rectangle的实例,长为10.0,宽为20.0,输出它的面积;

8、现在有两个双精度浮点型的数组如下: double xs[]={1,9,3,5,6}; double ys[]={10,11,4,7,13}; 又有一个长方形的数组

Rectangle rects[]=new Rectangle[25];

要求: 用Rectangle的构造函数给rects数组的每个元素赋值,长和宽分别为xs和ys的元素;然后按照面积由小到大给rects排序;编写它的程序段;

9、设计一个集合类Set,然后再编写一个应用程序,创建两个Set对象,并利用Math.random()产生这两个集合中的元素,然后对他们实施“交”、“并”操作。

10、设计一个矩阵类matrix,然后再编写一个java应用程序,创建三个matrix对象a、b和c,初始化a和b,计算矩阵a和b的乘积,并赋值给c,最后输出结果。

11、设计一个类TestArraySum,定义一个含有10个元素的int类型数组a,10个数组元素的值是11~20,再定义一个方法arraySum(int[] a),返回数组所有元素的和,最后用main

第 43 页 共 48 页

方法实现在屏幕上输出数组a所有元素的和。

12、编写一个java程序Suansu.java,定义两个整型变量a和b,使用构造函数初始化a为10,b为5,并定义求出a与b的和(方法名为AddAB)、差(方法名为SubAB)、积(方法名为MultiAB)、商 (方法名为DivAB)的方法。

用另一个java程序TestSuansu.java测试Suansu.java定义的方法,并在屏幕上输出结果。 13、创建一个名为Rectangle的类来表示一个使用宽度和高度来改变量的矩形,矩形的宽度和高度由构造方法来确定。为Rectangle类创建下列方法: ? getArea返回矩形的面积,要求长和高的范围为0~50; ? getPerimeter返回矩形的周长;

? Draw使用星号(*)作为描绘字符画出该矩形(假设宽度和高度为整数); 在另一个类TestRectangle中编写main方法来测试Rectangle类。 14、用面向对象的思想定义一个接口Area,其中包含一个计算面积的方法CalsulateArea(),然后设计MyCircle和MyRectangle两个类都实现这个接口中的方法CalsulateArea(),分别计算圆和矩形的面积,最后写出测试以上类和方法的程序。

15、按以下要求编写程序。

(1)定义一个Shape接口,该接口中只有一个抽象方法getArea(),该方法无参数,返回值类型为double型;

(2)定义一个圆类Circle,满足以下条件: a)Circle类实现Shape接口;

b)定义Circle类的成员变量r,表示圆的半径,数据类型为int;

c)定义Circle类的构造方法,参数名为r,用该参数初始化圆的半径; d)实现getArea()方法,计算圆的面积(注:圆周率取3.14)

(3)编写一个测试类,类名为TestCircle,利用Circle类计算半径为5的圆的面积,并将面积在屏幕打印出来。

16、请编写2类

第一个类包含下面两个方法:

int QuadEq(double a, double b, double c) 返回ax^2+bx+c=0的不重复实数根的个数 int IsPrime(int x)

判断x是否为正素数,是返回1,否则返回0;

第二个类,调用第一个类中的两个方法,计算并输出QuadEq(1,2,3)、 QuadEq(4,5,6)、 QuadEq(1,-2,1)、 IsPrime(46)、 IsPrime(-23)、 IsPrime(91)的值

17、编写一个程序,类名为WordCount,统计单词“hello”在一篇英文文章(保存在文件article.txt)中出现的次数,要求统计时忽略单词的大小写,统计结果在屏幕上打印出来的格式为:单词***在文章***中出现的次数为:10。 提示:下面是String类中的几个方法:

(1) public int indexOf(String str) //返回指定子字符串在此字符串中第一次出现处的

索引。

第 44 页 共 48 页

(2) public int indexOf(String str,int fromIndex) //从指定的索引开始,返回指定子字

符串在此字符串中第一次出现处的索引。

(3) public String toUpperCase() // String 中的所有字符都转换为大写 (4) public String toLowerCase () // String 中的所有字符都转换为小写

18、编写一个程序N_Digital.java,随机生成n个数,n的值也随机生成,n的取值范围为10~50。要求将生成的n个数从大到小排序写入n.txt文件保存。

19、编写一个文件拷贝的程序,将文件C:\\test1.txt的内容拷贝到C:\\test2.txt中。

20、编写一个Java程序ReadFileContent.java读取当前目录下的Test.txt文件内容(内容含有中文字),将该文件的内容按行读取出来,并在每行前面加上行号后写入当前目录的myTest.txt文件中。

21、创建一个Frame,有两个Button按钮和一个TextField,点击按钮,在TextField上显示Button信息。

22、创建下图的GUI程序(注意:不需要提供任何功能)。

23、编写一个文本编辑程序TextEdit.java,用户界面中含一个TextArea组件和一个“保存”Button组件(采用BorderLayout布局,TextArea组件放在”Center”区,Button组件放在”South”区),用鼠标单击按钮,程序将TextArea组件中的内容写入文件mytext.txt中。

注:窗口事件可不用处理

24、用Java Swing GUI组件JPanel、JTextField、JLabel和JButton写一个Java程序。这个程序是用来进行简单的加法运算,其中用两个JTextField来输入要进行运算的数值,用一个JLabel来显示结果,用JButton来监听进行运算的指令,可任选你认为合适的布局管理器。

25、编写一个简单的图形界面程序ButtonDemo.java,界面标题为“按钮测试” ,窗口大小为200×100,使用FlowLayout布局,界面上有两个按钮(分别为OK和Cancel),点击OK按钮,则打印“您按了OK按钮!”,点击Cancel按钮,则打印“您按了Cancel按钮!” 。

第 45 页 共 48 页

26、使用AWT或Swing组件编写一个支持中文文本编辑程序TextEdit.java,要求如下: ①用户界面大小为400×200像素,如下图所示:

②程序启动后,多行文本输入框TextArea中显示当前目录下myText.txt文件中原有的内容,如果该文件不存在,则新建该文件。

③“保存”按钮功能:将多行文本输入框TextArea中的内容写入myText.txt文件中保存。 ④“取消”按钮功能:将多行文本输入框TextArea中的内容清空。 ⑤“退出”按钮功能:退出程序 ⑥ 窗口事件不处理

27、一个用AWT编写的用户登陆程序说明如下:

①用户界面大小为200*160像素,如下图所示:

②用户类型包括学生用户和教师用户,缺省为学生用户。

③“确定”按钮功能:如果用户名为空,则打印\用户名不可为空!\;如果密码为空,则打印\密码不可为空!\;如果是学生用户,用户名和密码都是s,登陆成功则打印\学生用户登陆成功\;如果是教师用户,用户名和密码都是t;登陆成功则打印\教师用户登陆成功\;如果登陆不成功,则打印\用户名不存在或者密码不正确!\。 ④“取消”按钮功能:将用户名和密码的输入框清空。 ⑤“退出”按钮功能:退出程序 ⑥窗口事件不处理

⑦该程序的代码框架如下: import java.awt.*;

import java.awt.event.*;

public class UserLogin extends Frame implements ActionListener,ItemListener{

Panel panel1,panel2; //定义两个面板

Label userType,userLabel,pswLabel;//分别定义用户类型、用户名和密码标签

第 46 页 共 48 页

TextField userName,psw;//分别定义用户名和密码文本框

Button yesBtn,cancelBtn,exitBtn;//分别定义确定、取消和退出按钮 Choice userSelect;//用户类型下拉框

int userID=0; //定义用户类型标志变量,0表示学生用户,1表示教师用户

public UserLogin(){ //定义用户登陆界面的构造方法

?? }

?? //事件处理的方法代码块

public static void main(String args[]){ new UserLogin(); } }

根据以上要求,完成下面两个问题的代码: (1)补全用户登陆界面的构造方法的代码 (2)写出该用户登陆的事件处理方法的代码

28、应用Java中线程的概念,编写一个Java程序(包括一个主程序类,一个Thread类的子类)。在主程序中创建2个线程(用子类),将其中一个线程的优先级设为10,另一个线程的优先级设为6。让优先级为10的线程打印200次“线程1正在运行”,优先级为6的线程打印200次“线程2正在运行”。(提示:设置线程优先级用setPriority方法)

29、假设一个银行的ATM机,它可以允许用户存款也可以取款。现在一个账户上有存款200元,用户A和用户B都拥有在这个账户上存款和取款的权利。用户A将存入100元,而用户B将取出50元,那么最后账户的存款应是250元。实际操作过程如下: (1) 先进行A的存款操作:

1) 得到账户的存款数额200,耗时2s。 2) 将账户数额增加100,耗时忽略不计

3) 将新生成的账户结果300返回到ATM机的服务器上,耗时2s (2) 再进行B的取款操作:

4) 得到增加后账户存款数额300,耗时2s。

5) 判断取款额是否小于账户余额,若是,则将账户数额减少50,否则抛出异常信息,

耗时忽略不计。

6) 将新生成的账户结果250返回到ATM机的服务器上,耗时2s。 请根据以上要求,将A的操作和B的操作分别用线程来表示,编写一个Java程序实现该功能。

30、编写一个程序,扫描本机的小于5000的端口,显示正在使用的端口号。要求采用5个线程实现,每个线程扫描1000个端口。

31、用Java编写一个服务器端的程序Server.java,该程序在8000端口监听客户端的请求,如果与客户端连接后,收到客户端发送的数据不是字符串“bye”,则在服务器端打印客户端发来的数据,并向客户端回送一条从键盘输入的信息,若客户端发来的数据是字符串“bye”,

第 47 页 共 48 页

则关闭服务器端程序。

32、编写一个服务器端ServerDemo.java程序,它能够响应客户的请求。如果这个请求的内容是字符串\的话,服务器仅将\字符串返回给用户。否则将用户的话追加到当前目录的文本文件log.txt中,并向用户返回\。

第 48 页 共 48 页