您的当前位置:首页正文

JAVA期末考试试卷和习题及答案汇总

2020-08-18 来源:年旅网
JAVA期末考试试卷和习题及答案汇总

一、单项选择题

1.下面哪个不是Java中的容器? B

A、 ScrollPane B、Canvas

C、Applet

D、Dialog C

repaint()

2.下面哪个方法与applet的显示无关? A

A、draw() B、 update() D、paint()

3.以下哪个方法用于定义线程的执行体? C

A、 start() B、init() C、run() D、synchronized() 4.当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式?A A、 FlowLayout B、CardLayout C、BorderLayout D、GridLayout 5.有如下代码段:

1)

2) { if(unsafe()){//do something…} 3) else if(safe()){//do the other…} 4) }

其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?D

A、public IOException methodName()

B、public void methodName()

C、public void methodName() throw IOException D、public void methodName() throws IOException

6.以下哪个关键字可以用来对对象加互斥锁?B

A、transient B、synchronized C、 serialize D、static 7.编译并运行以下程序,以下描述哪个选项是正确的C

1. class A{

2. protected boolean equals(){ 3. return super.equals();} 4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译 A、private

D、不能成功编译,行3出错

D、public

8.在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。

B、protected C、private protected

9.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( B)个比特位。

A、8 B、16 C、32 D、64 10.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上( D )语句。

A、import java.awt.* ; B、import java.applet.* ;

C、import java.io.* ; D、import java.awt.event.* ;

11.以下关于构造函数的描述错误的是(A)。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。 C、构造函数的主要作用是完成对类的对象的初始化工作。 D、一般在创建新对象时,系统会自动调用构造函数。

12.有程序如下,关于程序的描述哪个是正确的?(C )

public class Person{

static int arr[] = new int[10];

public static void main(String a[]) { System.out.println(arr[1]); } }

A、编译将产生错误 B、编译时正确,但运行时将产生错误

C、正确,输出0

D、正确,输出 null

13.有语句String s=”hello world”; ,以下操作哪个是不合法的?( B) A、int i=s.length();B、s>>>=3;C、String ts=s.trim(); D、String t=s+”!”; 14.给出如下代码:

class Test{

private int m;

public static void fun() { // some code... } }

如何使成员变量m 被函数fun()直接访问?(C)

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

15. Java application中的主类需包含main方法,main方法的返回类型是什么?(D)

A、int B、float C、double D、void 16.有以下方法的定义,请选择该方法的返回类型(D)。 ReturnType method(byte x, double y) {

return (short)x/y*2; } A、byte B、short C、int D、double 17.下列哪些语句关于Java内存回收的说明是正确的? (B ) A、程序员必须创建一个线程来释放内存

B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存

D、内存回收程序可以在指定的时间释放内存对象

18.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上(D)语句。

A、import java.awt.* ; B、import java.applet.* ;

C、import java.io.* ; D、import java.awt.event.* ; 19.容器Panel和Applet缺省使用的布局编辑策略是(B)

A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout 20.设有下面两个赋值语句:

a = Integer.parseInt(“123”);

b = Integer.valueOf(“123”).intValue(); 下述说法正确的是(D)

A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。 C、a和b都是整数类对象并且值相等。D、a和b都是整数类型变量并且值相等。 21.编译并运行以下程序,以下描述哪个选项是正确的(C )。

1. class A{

2. protected String toString(){ 3. return super.toString();} 4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译

D、不能成功编译,行3出错

22.有以下程序片段,下列哪个选项不能插入到行1。(D ) 1.

2.public class Interesting{ 3.//do sth 4. }

A、import java.awt.*; B、package mypackage;

C、class OtherClass{ }

D、public class MyClass{ }

D、void

23.以下哪个不是Java的关键字?(A)

A、TRUE B、const C、super

24.关于以下application的说明,正确的是( C)。 1. class StaticStuff 2. {

3. static int x; 4. static { x+=5;}

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

7. System.out.println(“x=” + x); 8. }

9. static { x/=5;} 10.}

A、4行与9行不能通过编译,因为缺少方法名和返回类型 B、9行不能通过编译,因为只能有一个静态初始化器 C、编译通过,执行结果为:x=1

D、能通过编译,但程序运行结果不可预知,因为变量x没有初始化 25.FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?B

A、OutputStream B、File C、InputStreamD、BufferedOutputStream 26.在使用interface声明一个接口时,只可以使用(D)修饰符修饰该接口。

A、private B、protected C、private protected D、public 27.有程序片段如下,以下哪个表示式的结果为true?(B) Float s=new Float(0.1f); Float t=new Float(0.1f); Double u=new Double(0.1);

A、s==t B、s.equals(t) C、u.equals(s) D、t.equals(u) =========================================================

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B )。

A. java B. class C. html D. exe 2、以下哪一个不是JAVA的标准数据流( D)。

A. 标准输出数据流 B. 标准输入数据流 C. 标准错误数据流 D. 标准运算数据流 3、. class 和.java 文件的含义分别是:(A)

A. Java 目标码文件和源文件; B. Java 可执行文件和目标码文件; C. Java 源文件和目标码文件; D. Java 源文件和Java 平台配置文件; 4、 面板的边框有哪几种? (D)

A. 面板没有边框; B. 仅有单线边框;

C. 仅有黑色的边框; D. 面板缺省没有边框,但可以设置单线、斜坡、不光滑等多种线形,可以设置边框的颜色、宽度等,还可以设置边框与内容之间的举例等;

5、 以下几个命名方法,不符合Java 命名规范的是:(D) A. 类的名称:MyClassName; B. 变量的名称:myArray; C. 常量的名称:PI_VALUE; D. 成员函数的名称:GetName; 6、 在下面的代码中,break语句的作用是:(C) for (int i = 0; i < 10; i++) if (aData[i] = = TargetData) { FoundID = i; break; }

A. 退出if 程序块; B. 退出此次循环,直接进入下一次循环; C. 退出整个循环; D. 退出整个函数;

7、 以下项中,不属于成员变量的定义部分的是:D

A. 访问级; B. 变量名称; C. 变量类型; D.变量的初始化方式; 8、以下关于异常捕获的原则中,错误的是(D )

A RuntimeException 可以不被捕获,Java会自动处理运行期异常。 B 先列出子类,后列出父类。

C 先列出具体的异常类,后列出通用的异常类。

D Exception类必须出现,而且必须作为catch块中第一个匹配的类。 9、 Java的一个重要特点是结构中立性,这种结构中立性表现在(C) A 用Java编写的源程序无需编译,直接通过Java平台解释执行。

B Java源程序在不同的硬件和操作系统下,直接编译成该硬件和操作系统

能够运行的程序并运行。

C Java源程序编译成一种结构中立的目标文件格式,再有Java平台在不同

的硬件和操作系统下运行。

D Java源程序编译成一种通用的可执行程序,现在的硬件和操作系统都支

持这种通用的可执行程序。

10、在Swing中,一下列出的面板的作用中,错误的是(C).

A. 放置并排列组件B显示背景图案;C接收事件;D显示面板的边框; 11、.在Swing中,如何设置组件的边框?( C)

A通过根窗格的setBorder函数设置某各组件的边框; B通过内容窗格的setBorder函数设置某各组件的边框; C通过组件的setBorder函数设置;

D通过框架的setBorder函数设置某各组件的边框;

12、以下关于框架和其他窗口之间的关系中,错误的是(D) A 对话框必须依附于某个框架

B 当框架最小化时,所有依附于它的窗口也会最小化

C 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架 D 内部框架也是顶级容器组件

13、创建并显示框架的步骤中,错误的是(A) A 将框架对象与入口类相连接 B 在框架中加如组件 C 创建一个框架对象

D 调用框架对象的setVisible函数显示框架 14、如何在框架中显示标题?(C ) A 调用根窗格的set Title 函数显示 B 调用内容窗格的setTitle函数显示 C 调用框架对象的setTitle函数显示

D 调用框架对象的Border对象的setTitle函数显示 15、下列关于Java语言的特点,描述错误的是(C)

A.Java是跨平台的编程语言 B.Java支持分布式计算 C.Java是面向过程的编程语言 D.Java支持多线程 16、下述概念中不属于面向对象方法的是D___。

A.对象、消息 B.继承、多态 C.类、封装 D.过程调用 17、结构化程序设计所规定的三种基本控制结构是 ( C )

A.输入、处理、输出 B.树形、网形、环形 C.顺序、选择、循环 D.主程序、子程序、函数 18、以下声明合法的是( B )

A.default String s; B.public final static native int w( )

C.abstract double d; D.Abstract final double hyperbolicCosine( ) 19、Applet可以做下列哪些操作?C

A.读取客户端文件 B.在客户端主机上创建新文件 C.在客户端装载程序库 D.读取客户端部分系统变量

20、下列关于for循环和while循环的说法中哪个是正确的? c A.while循环能实现的操作,for循环也都能实现

B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果

C.两种循环任何时候都可替换

D.两种循环结构中都必须有循环体,循环体不能为空

==================================================================== 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。

A .java B.class C .html D .exe

2、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5

3、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( D )方法来完成一些画图操作。

A. start( ) B. stop( ) C. init( ) D. paint( ) 4、不允许作为类及类成员的访问控制符的是( C )。

A. public B. private C. static D. protected

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

A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) ********************************************************************* 1、Java中复合数据类型不包括(D)

A.类类型 B.数组 C.接口类型 D.指针

2、请从四个选项中选择答案,下列代码的执行结果是:(C) Public class Test{

Public static void main(String args[]){ Float t=9.0f; Int q=6;

System.out.println((t++)*(--q)); } }

A.40 B.40.0 C.45.0 D.36.0

3、下列关于修饰符混用的说法,错误的是(D) A.abstract 不能与final 并列修饰同一个类 B.abstract类中可以有非abstract的方法

C.普通类(非abstract类)中不能有abstract方法 D.static方法中能处理非static的属性

4、关于被保护访问控制符protected修饰的成员变量,以下说法正确的是(A) A.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所

访问

B.只能被该类本身和该类的所有的子类访问 C.只能被该类自身所访问 D.只能被同一个包中的类访问

5、x=2,y=3,z=4,则表达式z*=y++*--x的值是(A) A.12 B.24 C.16 D.3 6、以下赋值语句正确的是(D) A.char c1=”a” B.float f1=3.22 C.byte b1=266 D.long L1=0xAC8L 7、Java不支持多重继承,但我们可以通过(B)实现 A.多态 B.接口 C.覆盖 D.抽象类

8.已知类person是类student的父类,以下数组定义和赋值哪些是正确的(A) A. person p[]=new person[3]; p[1]=new student(); B .student s[]=new person[3]; s[1]=new person(); C .person p[]= new student[3];p[1]= new person(); D .student s[]=new student[3];s[1]=new person;

9 编译MyClass.java之后,得到了三个字节码文件:MyClass.class , MyClasslittle$.class MyClass$1.class.这表明(C) A.MyClass类中的两个方法:little和1

B. MyClass.Java中有三个类:MyClass、little和1

C. MyClass类中有两个内部类:一个是命名的little,另一个是匿名的1 D. MyClass、little和1,这三者没什么关系

10、main 方法是java Application 程序执行的入口点,关于main方法的方法头以下(B)是合法的。

A.public static void main() B.public static void main(String arg[]) C.public static int main(String[] arg) D. B.public void main(String arg[])

11、当编译和运行下面的代码会出现什么情况?(A) Import java.io.*; Class ExBase{

Abstract public void martley() }

Public class MyEx extends ExBase{

Public static void main(String argv[]){

DataInputStream fi=new DataInputStream(System.in); Try{

Fi.readChar(); }

Catch(IOEception e){ System.exit(0); }

Finally{System.out.println(“Doing finally”);} } }

A.编译错误 B.可以运行,没有打印出”Doing finally”

C.可以运行,在打印出”Doing finally”后退出 D.在运行之后立即退出 12、当编译和运行下面的代码会出现什么情况?(D) Public class Sandys{ Private int court;

Public static void main(String argv[]){ Sandys s=new Sandys(99); System.out.println(s.court); }

Sandys(int balleount){ court=ballcount; } }

A编译错误,变量court被定义为private

B编译错误,System.out调用的s没有被初始化 C可以编译和运行,没有输出结果 D可以编译和运行,输出结果为99 13、给出下面的代码: Class Base{}

Class Agg extends Base{ Public String getFields(){ String name=”Agg”; Return name; } }

Public class Avf{

Public static void main(String argv[]){ Base a=new Agg(); //Here } }

当把下面的代码添加到注释“/Here”后面,程序的输出结果是”Agg”(D) A.System.out.println(a.getFields()) B. System.out.println(a.name) C.System.out.println((Base)a.getFields()) D.System.out.println(((Agg)a).getFields())

14、当编译和运行下面的代码会出现什么情况?(A) Abstract class Base{

Abstract public void myfunc(); Public void another(){

Systern.out.println(“Another method”); } }

Public class Abs extends Base{}

Public static void main(String argv[]){ Abs a=new Abs();

a.amethod(); }

Public void myfunc(){

System.out.println(“My Func”) }

A可以编译和运行,输出的结果是”My func” B出现编译错误:Base类中没有抽象方法

C可以编译,但运行是提示Base类中没有抽象方法 D出现编译错误,Base类中的方法myfunc没有方法体 15、编译和运行下面的代码会出现(D) Import java.io.*; Class Base{

Public void amethod()throws FileNotFoundException{} }

Public class ExcepDemo extends Base{ Public static void main(String argv[]){ New ExcepDemo(); }

Public void amethod(){} Protected ExcepDemo(){ try{

BufferedReader inputStream=new BufferedReader(new InputStreamReader); System.out.println(“Pausing”); inputStream.readLine();

System.out.println(“Contimuing”); This.amethod();

}catch(IOException ioe){} }

A编译错误,因为构造方法被声明为protected B编译错误,因为方法amethod没有抛出异常 C运行时错误,因为方法amthod没有抛出异常

D可以编译和运行,输出的结果是:Pausing…Continuing 其中…表示等待用户的键盘输入 17、以下程序的输出结果是(C) class Aclass{

void go(){System.out.println(“Aclass”);} }

public class Bclass extends Aclass{ Void go{

System.out.println(“Bclass”); }

Public static void main(String args[]){ Aclass a= new Aclass(); Aclass al=new Bclass();

a.go(); al.go(); } }

A、Aclass

Aclass

B、Bclass Bclass C、Aclass Bclass D、Bclass Aclass 18、看以下程序 Boolean a=false; Boolean b=true;

Boolean c=(a&&b)&&(!b); Int result=c==false?1:2;

这段程序执行完后,c与result的值是:(A)

Ac=false;result=1; Bc=true;result=2; Cc=true;result=1; Dc=false;result=2; 19、下面哪个单词是Java语言的关键字(B) A.Float B.this C.string D.unsigned 20、switch语句(A)

A.都可以用if-else if结构实现 B.都不可以用if-else if结构实现 C.有的可以用if-else if结构实现 D.大部分不可以用if-else if结构实现

21、在异常处理中,如释放资源、关闭文件等善后操作由(C)来完成。 A. try子句 B. catch子句 C. finally子句 D. throw子句 22、下面哪个是Java语言中正确的标识符( C) A. 3com B. import C. that D. this

23、下面哪个修饰符修饰的方法只能被本类中的其他方法使用(C) A. protected B. static C. private D. 24、下面哪条语句定义了5个元素的数组(A) A. int[]a={22,23,24,25,12}; B. int a []=new int(5); C. int[5] array; D. int[] arr;

25、下面哪项可以得到数组元素的个数,Java中定义数组名为abc。( B ) A. abc.length() B. abc.length C. len(abc) D.ubound(abc) 26、下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的(C) A. public B. private C.static D.final 27、下面关于构造方法的说法不正确的是(B)

A、构造方法也属于类的方法,用于创建对象的时候给成员变量赋值。 B、构造方法不可以重载。 C、构造方法没有返回值

D、构造方法一定要和类名相同 28、监听事件和处理事件(A)

A、都由Listener完成 B、都由相应事件Listener处登记过的构件完成 C、由Listener和构件分别完成 D、由Listener和窗口分别完成

29、如果希望所有的控件在界面上均匀排列,应使用下列那种布局管理器?(B) A. BoxLayout B. GridLayout C.BorderLayout D.FlowLouLayout 30、给出如下代码: Class Test{ Private int m;

Public static void fun() { // some code… } }

如何使成员变量m被函数fun()直接访问?(C) 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 31、有个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就……法头的形式为(A)

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

C. final void method() D. abstract void method()

32、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)

A.java B.class C .html D .exe

33、如果只要让类中的成员变量可以被同一包访问,则使用如下哪个访问控制符?(D)

Aprivate;BPublic;CProtected;D不使用访问控制符 34、以下哪个方法用于定义线程的执行体?(C) A start();B init();C run();D main();

35、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制(B)A、 安全性 B、多线程 C、跨平台 D、可移植 36、为实现多线程之间的通信,需要使用下列哪种流才合适(D) AFilter stream;BFile stream

CRandom access stream;DPipedInputStream和PipedOutputStream 37、函数重载是指(A)

A两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B两个以上的函数取相同的名字和具有相同的形参个数和类型 C两个以上的函数名字不同,但形参的个数或类型相同

D两个以上的函数取相同的函数名,并且函数的返回类型相同

38、构造方法何时被调用(B)

A、类定义时 B、创建对象时C、调用对象方法时 D、使用对象的变量时 39、Java中哪个类提供了随机访问文件的功能(A)

A.RandomAccessFile类 B.RandomFile类C.File类 D.AccessFile类 40、当方法遇到异常又不知如何处理时,应该怎么做(B) A.捕获异常 B.抛出异常C.声明异常 D.嵌套异常

=============================================================================================================================================================================================================== 二、填空题:(10小题,每题1分,共10分) 1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、 编译生成自节码 和解释运行字节。 2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 Applet 类的子类并且存储该源程序文件的文件名为 MyApplet.java。

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器 javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为 .class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode

码占 用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。

5、使用数组时,下标表达式是整型表达式,下标的范围为 0 至数组长度减1 6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。 8、创建一个名为 MyPackage 的包的语句是 package MyPackage ; 该语句应该放在程序的位置为: 应该在程序第一句 。

9、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义可以实现 多重继承关系。

10、在文件操作中,public String getName()功能是 得到文件名。 public String getAbsolutePath()功能是 返回文件绝对路径。

================================================================== 1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、 编译生成字节码 和 解释运行字节码 。 2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 Applet 类的子类并且存储该源程序文件的文件名为 MyApplet 。

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器 javac.exe 编译该源程序文件将产生 3 个文件名与类名相同而扩展名为 . class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。

5、设 x = 2 ,则表达式 ( x + + )/3 的值是 1 。

6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。 7、 抽象(abstract)方法 方法是一种仅有方法头,没有具体方法体和操

作实现的方法,该方法必须在抽象类之中定义。 最终(final)方法 方法是不能被当前类的子类重新定义的方法。

8、创建一个名为 MyPackage 的包的语句是 package MyPackag ,

该语句应该放在程序的位置为: 应该在程序第一句 。 9、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是 120 。 int s = 0 ;

for ( int i = 0 ; i < MyIntArray.length ; i + + )

if ( i % 2 = = 1 ) s += MyIntArray[i] ; System.out.println( s );

10、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义可以实现 多 重继承关系。 ==================================================== 三、判断题。

1Java语言是平台无关的语言。T

2类的静态方法中可以访问该类的非静态数据成员.F

3Java中方法调用时参数传递都是按值传递的,因此从方法中退出时,参数的值是不会变的。T

4覆盖方法所抛出的异常不能比原方法更多。T 5Final 方法不能被覆盖。T

6抽象类中一定包含抽象方法。F 7接口中的方法必须是抽象方法。T

8在方法定义中,所以可能发生的异常都必须用try{} catch(){}捕捉。F 9Java支持多重继承。F

10Final修饰的类不能派生子类。T

11覆盖的同名方法中,子类方法不能比父类方法的访问权限更严格。T 12不能在静态方法中使用this.T 13抽象类中不能创建对象。T 14一个类可以实现多接口。T 15接口中可以包含非静态成员。F

16不论是否捕捉到异常try{}catch(){} final{}语句中finally块中的代码总要被执行。T

17一个类实现一个接口,则该类必须实现接口中的所有方法。F 18线程使用sleep方法去休眠后可以使用notify方法唤醒。F 19线程使用sleep方法休眠是会释放该线程同步锁定的对象。F 20Final类中的属性和方法都必须是final的。F

1、Java中的引用变量需要初始化,简单变量可以不进行初始化( x ) 2、子类可以继承父类的除私有成员以外的其它所有成员。 ( v ) 3、Java只支持单继承,也就是说子类只能有一个直接父类。(v ) 4、框架是一个程序的主窗口,它是顶级容器。(v) 5、关闭框架时,缺省地也会关闭整个应用程序。(x)

6、Java可以设置程序的界面外观,即可以让程序在不同操作系统下按照系统特有的外观风格显示,也可以将风格统一。( v)

7、中间容器,原子组件,菜单栏,工具栏等都直接放在顶级容器下( x) 8、++op运算符的作用是先将变量的值加1再返回变量的值(v)

9、为了不影响程序的正常运行,Javadoc命令全部嵌入在注释语句中,以“/**”开头,以“*/”结尾。(v)

10、标签是最常用的组件,它的作用是在界面上显示一行文字,标签也可以显示图片,或者即显示图片也显示文字。( v )

1即使一个类中未显式定义构造函数,也会有一个缺省的构造函数,缺省的构造函数是无参函数,函数体为空。 ( 对 )

2在Java的方法中定义一个常量要用const关键字。 ( 错 )

3在异常处理中总是将可能产生异常的语句放在try块中,用catch子句去处理

异常,而且一个try块之后只能对应一个catch语句。 ( 错)

4Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。 ( 对 )

5一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法的方法体。 ( 对 )

6Java的字符类型采用的是Unicode编码,但所占字节由具体软硬件环境决定。 ( 错 )

7所有的鼠标事件都由MouseListener监听接口的监听者来处理。 ( 错 )

8Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。 ( 对 )

9如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的。 ( 错 )

10Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。 ( 错 )

11由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。 (错 )

12静态初始化器是在其所属的类加载内存时由系统自动调用执行。 ( 对 )

13 Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。 ( 对 )

14注释的作用是使程序在执行时在屏幕上显示//之后的内容。 ( 错 )

15在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。 ( 对 )

===================================================================== =========================================================================================================================================

四、简答

1比较接口与抽象类的共同点和不同点.什么情况下应采用接口,什么情况下应采用抽象类.

答:接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。 如果创建的功能将在大范围的全异对象间使用,则使用接口。

抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法。 相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点 :接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。 2类的加载和构造方法的调用顺序

类的加载的顺序:先递归地加载父类的静态成员/代码块(object的最先);再依次加载到本类的静态成员。

调用构造方法:先递归地调用父类的构造方法;默认调用父类空参的同,也可在第一行写明调用用父类某个带参的。再依次到本类的构造方法;

先初始化父类的静态代码--->初始化子类的静态代码--> ==

==(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码---> ==

==初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数 ==

3什么是重载,什么是覆盖,有什么区别和共同点?

答:重载是指在同一个类中定义了多个名字相同而内容不同的成员方法;覆盖则是指在子类中定义了与父类具有相同名字的成员方法。

重载与覆盖的区别在于:重载是存在于同一个类的不同方法之间的多态关系,它们主要通过参数表中参数的个数、参数的数据类型和参数的顺序等方面的不同来区分;面覆盖是存在于父类与子类之间的多态关系,它们在引用时通过指出所属类的类名来区分。

============================================================================================================================================================================================================== 五.程序阅读题

1.写出以下程序的运行结果。(54321)

public class TestArray

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

int a[ ] = {1,3,2,5,4}; for ( i = 0 ; i < a.length-1; i ++ ) { int k = i; for ( j = i ; j < a.length ; j++ ) if ( a[j]>a[k] ) k = j; int temp =a[i]; a[i] = a[k]; a[k] = temp; } for ( i =0 ; i2.写出以下程序的功能。(在屏幕上输出test.java文件的内容)

import java.io.*; class FileIODemo{

public static void main(String[ ] args) throws IOException{ int b;

FileInputStream fileIn=new FileInputStream(“test.java”);

while((b=fileIn.read())!=-1){

System.out.print((char)b); } } }

3.写出以下程序的运行结果。Str0str1str2 str0str2

import java.util.*; public class Vec{

public static void main(String[] args) { String[] s; s=new String[2];

s[0]=new String(\"str1\"); s[1]=new String(\"str2\"); Vector v = new Vector();

for(int i = 0; i <2; i++) v.addElement(s[i]); v.insertElementAt(new String(\"str0\"),0); Enumeration e = v.elements(); while(e.hasMoreElements()) System.out.print(e.nextElement()+\" \");

System.out.println(); v.removeElement(\"str1\" ); for(int i = 0; i < v.size() ; i++) System.out.print(v.elementAt(i) +\" \");

System.out.println(); } }

4.写出以下程序的运行结果。int

class OverloadDemo{

void testOverload( int i ){

System.out.println(“int”); } void testOverload(String s){

System.out.println(“String”); } public static void main(String args[ ]){ OverloadDemo a=new OverloadDemo ( ); char ch=’x’;

a.testOverload(ch); } }

5.阅读以下程序,写出输出结果。inSecondclass

class First{

public First(){ aMethod(); }

public void aMethod(){

System.out.println(“in First class”);} }

public class Second extends First{ public void aMethod(){

System.out.println(“in Second class”);}

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

6.写出以下程序的运行结果。

class StaticTest { static int x=1; int y;

StaticTest() { y++; }

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

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

System.out.println(\"st.y=\" + st.y); } static { x++;} }

x=2 st y=1 st y=1 7.阅读以下程序:

class Exp1 {

public static void main(String[] args) {

String s,s1=\"\"; char c;

s=args[0];

for (int i=0;iif(c>='a' && c<='z'){

s1=s1+Character.toUpperCase(c); }else{

s1=s1+Character.toLowerCase(c); } }

System.out.println(s1); } }

若在dos命令行输入:java Exp1 cHINA,则输出为JAVA eXP1 China 。 8.阅读以下程序:

import java.io.*;public class AboutFile{

public static void main(String[ ] args){ BufferedReader b=new BufferedReader (new InputStreamReader(System.in));

String s;

System.out.flush(); s=b.readLine();

System.out.println(“String is:”+s); } }

运行以上程序,若从键盘输入:

java<回车>

则输出结果为String is: java 。 9.阅读以下程序,写出输出结果。

class Animal { Animal() {

System.out.print (\"Animal \"); } }

public class Cat extends Animal { Cat() {

System.out.print (\"Cat \"); }

public static void main(String[] args) { Cat kitty= new Cat(); } }

Animal Cat

10.以下程序段的输出结果为int,int

class Cruncher{

void crunch( int i ){

System.out.print(“int”); }

void crunch(String s){

System.out.print(“String”); }

public static void main(String args[ ]){

Cruncher crun=new Cruncher ( ); char ch=’h’; int i=12; crun.crunch(ch);

System.out.print(“,”); crun.crunch(i); }

}

11.阅读以下程序,输出结果为cooljava 。

import java.io.*;

public class TestString

{ public static void main(String args[ ])

{ StringC s = new StringC (\"cool\ System.out.println(s); } }

class StringC { String s1; String s2;

StringC( String str1 , String str2 ) { s1 = str1; s2 = str2; } public String toString( ) { return s1+s2;} }

12.以下程序段的输出结果为 1 v0 v1 1 vo 。

import java.util.*; public class VecApp {

public static void main(String[] args) { Vector v = new Vector(); for(int i = 0; i <2; i++) v.addElement(\"v\"+i);

v.insertElementAt(new Integer(1),0); Enumeration e = v.elements(); while(e.hasMoreElements())

System.out.print(e.nextElement()+\" \"); System.out.println(); v.removeElement(\"v1\" );

for(int i = 0; i < v.size() ; i++)

System.out.print(v.elementAt(i) +\" \"); System.out.println(); } }

四.编程题

1.编写一个输出\"Welcome to Java World!\"的Applet程序和嵌入该Applet的HTML页面。

① // Welcome.java

②//Welcome.html

import java.applet.*; import java.awt.*;

public class Welcome extends Applet { public static String str=null; public void init() {

str=\"Welcome to Java World !\"; };

public void paint(Graphics g) { g.drawString(str, 10, 50); }; }

编写一个完整的JavaApplication程序。包含接口ShapeArea,类Circle、Rectangle、Test,具体要求如下:

⑴接口ShapeArea: ①接口方法

doublegetArea():求一个形状的面积

doublegetPerimeter():求一个形状的周长

⑵类Rectangle:

实现ShapeArea接口,并有以下属性和方法:

① 属性

width:double型,表示长方形的宽度 height:double型,表示长方形的长度 ② 方法

Rectangle(doublew,doubleh):构造函数

toString():输出矩形的描述信息,如

“width=1.0,height=2.0,perimeter=6.0,area=2.0”

⑶Test类作为主类要完成测试功能

① 生成Rectangle对象

②调用对象的toString方法,输出对象的描述信息

publicclassTest{//主类定义2分

publicstaticvoidmain(Stringargs[]) { Rectangler=newRectangle(1,2);

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

interfaceShapeArea//接口定义2分

{ publicabstractdoublegetPerimeter(); publicabstractdoublegetArea(); }

classRectangleimplementsShapeArea{

doublewidth,height;//属性定义1分

Rectangle(doublew,doubleh) //构造函数定义1分 { width=w;height=h; }

publicdoublegetPerimeter()//1分 {return2*(width+height);}

publicdoublegetArea()//1分 {returnwidth*height;}

publicStringtoString()//2分

{ return\"width=\"+width+\

\ } }

================================================================ 1、 打印出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数,其各位数字的立方和等于其本身。 例如:153是个“水仙花数”,因为153=13+53+33 class sxh{

public static void main(String args[]){ int first,second,third; for(int a=100;a<1000;a++){ first=a/100; second=a/10%10; third=a%10;

if(a==first*first*first+second*second*second+third*third*third){ System.out.println(a); } } } }

2、 编写一种从小到大排序程序。例如:a数组中有10个数。分别是{3,2,5,21,9,10,7,16,8,20},经过排序算法后,a数组变为{2,3,5,7,8,9,10,16,20,21,}。 class paixu{

public static void main(String args[]){ int a[]={3,2,5,21,9,10,7,16,8,20}; int b,c,d;

System.out.println(\"befor sorted\"); for(b=0;b<10;b++){

System.out.print(a+\" \"); }

System.out.println(\"\"); for(b=1;b<=9;b++)

for(c=0;c<=9-b;c++){ if(a[c]>a[c+1]){ d=a[c];

a[c]=a[c+1]; a[c+1]=d; } }

System.out.println(\"after sorted\"); for(b=0;b<10;b++){

System.out.print(a+\" \"); }

System.out.println(\"\");

==================================================================== 写出下列程序完成的功能。(每小题5分,) 1、public class Sum

{ public static void main( String args[ ]) { double sum = 0.0 ;

for ( int i = 1 ; i <= 100 ; i + + ) sum += 1.0/(double) i ;

System.out.println( \"sum=\"+sum );

}

} 答:计算 1/1+1/2+1/3+...+1/100 的值

2、 import java.io.* ; public class Reverse

{ public static void main(String args[ ]) { int i , n =10 ;

int a[ ] = new int[10];

for ( i = 0 ; i < n ; i ++ ) try {

BufferedReader br = new BufferedReader( new InputStreamReader(System.in));

a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数

} catch ( IOException e ) { } ; for ( i = n-1 ; i >= 0 ; i ―― ) System.out.print(a[i]+\" \"); System.out.println( ); } } 答:从标准输入(键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数

3、 import java.awt.*; public class abc

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

class FrameOut extends Frame // Frame为系统定

{ Button btn; // 义的窗框类

FrameOut( )

{ super(\"按钮\");

btn = new Button(\"按下我\"); setLayout(new FlowLayout( )); add(btn);

setSize(300,200); show( ); } }答:创建一个标题为\"按钮\"的窗框,窗框中显示有\"按下我\"字样的按钮。

4、import java.io.*; public class abc

{ public static void main(String args[])

{ SubClass sb = new SubClass( );

System.out.println(sb.max( )); } }

class SuperClass

{ int a = 10 , b = 20 ; }

class SubClass extends SuperClass { int max( ) { return ((a>b)?a:b); } }答:求两个数的最大值。

写出下面程序的运行结果(每小题10分,共30分) 1、 import java.io.*;

public class abc

{ public static void main(String args[ ])

{ AB s = new AB(\"Hello!\ System.out.println(s.toString( )); } }

class AB { String s1; String s2;

AB( String str1 , String str2 ) { s1 = str1; s2 = str2; } public String toString( ) { return s1+s2;}

}答:1、Hello! I love JAVA.

2、 import java.io.* ; public class abc

{

public static void main(String args[ ]) { int i , s = 0 ;

int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 }; for ( i = 0 ; i < a.length ; i ++ ) if ( a[i]%3 = = 0 ) s += a[i] ;

System.out.println(\"s=\"+s);

}

}答:s = 180 3、import java.io.* ; public class abc {

public static void main(String args[ ]) )

{ System.out.println(\"a=\"+a+\"\\nb=\"+b); } }

class SubClass extends SuperClass

{ int c;

SubClass(int aa,int bb,int cc) { super(aa,bb); c=cc; } }

class SubSubClass extends SubClass { int a;

SubSubClass(int aa,int bb,int cc) { super(aa,bb,cc); a=aa+bb+cc; }

void show()

{ System.out.println(\"a=\"+a+\"\\nb=\"+b+\"\\nc=\"+c); } }答:a=60 b=20 c=30

使用Java语言编写程序。(每小题10分,共20分)

2、编写一个字符界面的Java Application 程序,接受用户输入的10个整数,并输出这10个整数的最大值和最小值。 答:import java.io.* ; public class abc {

public static void main(String args[ ])

{ int i , n = 10 , max = 0 , min = 0 , temp = 0; try {

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in)); max = min = Integer.parseInt(br.readLine( )); } catch ( IOException e ) { } ; for ( i = 2 ; i <= n ; i ++ ) { try {

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in)); temp = Integer.parseInt(br.readLine( )); if (temp > max ) max=temp; if (temp < min) min=temp;

} catch ( IOException e ) { } ; }

System.out.println(\"max=\"+max+\"\\nmin=\"+min); } }

2、编写一个完整的Java Applet 程序使用复数类Complex验证两个复数 1+2i

和3+4i 相加产生一个新的复数 4+6i 。 复数类Complex必须满足如下要求:

(1) 复数类Complex 的属性有:

RealPart : int型,代表复数的实数部分 ImaginPart : int型,代表复数的虚数部分 (2) 复数类Complex 的方法有:

Complex( ) : 构造函数,将复数的实部和虚部都置0

Complex( int r , int i ) : 构造函数,形参 r 为实部的初值,i为虚部的初值。

Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。

String ToString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。 答:import java.applet.* ; import java.awt.* ;

public class abc extends Applet {

Complex a,b,c ;

public void init( ) {

a = new Complex(1,2); b = new Complex(3,4); c = new Complex(); }

public void paint(Graphics g) {

c=a.complexAdd(b);

g.drawString(\"第一个复数:\"+a.toString(),10,50); g.drawString(\"第二个复数:\"+b.toString(),10,70); g.drawString(\"两复数之和:\"+c.toString(),10,90); } }

class Complex {

int RealPart ; // 复数的实部 int ImaginPart ; // 复数的虚部

Complex() { RealPart = 0 ; ImaginPart = 0 ; } Complex(int r , int i)

{ RealPart = r ; ImaginPart = i ; } Complex complexAdd(Complex a)

{

Complex temp = new Complex( ); // 临时复数对象 temp.RealPart=RealPart+a.RealPart;

temp.ImaginPart=ImaginPart+a.ImaginPart; return temp; }

public String toString( )

{ return ( RealPart+\" + \"+ImaginPart+\" i \"); } }

Java线程 程序题

class sum implements Runnable { int sum = 0; int i;

public void run () { for(i=1;i<=100;i++) { sum+=i; }

System.out.println(\"从1加到100的结果为\"+sum); } }

class sumpro {

public static void main(String args[]) { sum sum1 = new sum(); Thread t=new Thread(sum1); t.start(); } } 异常

1.import java.io.*; class A{

void m() throws RuntimeException{} }

class B extends A{

void m() throws IOException{} }

2.import java.io.*; class A{

void m() throws RuntimeException{} }

class B extends A{

void m() throws IOException{} }

3.public class e8{

public static void main(String args[]){ e8 t=new e8(); t.first();

System.out.println(“Hi\"); }

public void first(){second();}

public void second() throws Exception{ int x[]=new int[2]; x[3]=2; } }

4.public class e10{

public static void main(String args[]) throws Exception{ e10 t=new e10(); t.first();

System.out.println(“Hi\"); }

public void first() throws Exception{second();} public void second() throws Exception{ int x[]=new int[2]; x[3]=2; } }

5使用super调用父类方法 class Fish extends Animal{ public Fish(){super(0);} public void eat(){

System.out.println(\"鱼吃小鱼虫\"); }

public void walk(){ super.walk();

System.out.println(\"鱼没有腿不会走路\"); } }

6.接口类的实现

class Cat extends Animal implements Pet{ String name;

public Cat(String n){ super(4); name=n; }

public Cat(){this(\"\");}

public String getName(){return name;} public void setName(String n){name=n;}

public void play(){

System.out.println(\"猫玩耍\"); }

public void eat(){

System.out.println(\"猫吃猫粮\"); } }

================================================================ 程序编程题

1、图形界面有一个标签、一个文本框和一个按钮,编写程序实现点击按钮后,将文本框的内容取出,作为标签文本复制给标签。 import javax.swing.*; import java.awt.*;

import java.awt.event.*;

public class c10_15 extends JApplet implements ActionListener {

Container ctp=getContentPane();

ImageIcon icon1=new ImageIcon(\"g1.gif\"), icon2=new ImageIcon(\"g2.gif\"); JLabel lb1=new JLabel(),

lb2=new JLabel(\"标签文本\ JTextField tf1=new JTextField(10);//创建文本框对象 JButton bt=new JButton(\"复制到标签\");//创建按钮对象 public void init() {

ctp.setLayout(new FlowLayout()); ctp.add(tf1); ctp.add(bt); ctp.add(lb2);

bt.addActionListener(this); }

public void actionPerformed(ActionEvent e) {

String str;

if(e.getSource()==bt) {

str=tf1.getText(); lb2.setText(str); } } }

2、如图所示,标签1的字号比文本框的字号大。当单击按钮时,若输入文本框中的数正确,则标签2文本显示正确,否则显示不正确。

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

import java.awt.event.*;

public class c10_16 extends JApplet implements ActionListener {

Container ctp=getContentPane();

ImageIcon icon1=new ImageIcon(\"g1.gif\"), icon2=new ImageIcon(\"g2.gif\"); JLabel lb1=new JLabel(),

lb2=new JLabel(\"6+9=\");//创建标签

JTextField tf1=new JTextField(3);//创建文本框对象 JButton bt=new JButton(\"验证\");//创建按钮对象

Font f=new Font(\"Arial\设置字体和大小 public void init() {

lb2.setFont(f);//设置标签字体变大

ctp.setLayout(new FlowLayout());//设置排列方式 ctp.add(lb2); //加入组件 ctp.add(tf1); ctp.add(lb1); ctp.add(bt);

bt.addActionListener(this);//假如按钮的监听 }

public void actionPerformed(ActionEvent e) {

String str1=\"正确\"; String str2=\"不正确\"; String str3=\"\";

if(e.getSource()==bt) {

str3=tf1.getText(); if(str3.equals(\"15\")){ lb1.setText(str1); } else

lb1.setText(str2); } } }

3、编写一个JApplet程序,用GridLayout的布局方式设计一个界面,共八个按钮当点击含有加号的按钮时,则第一排第二个按钮文本变为加号,当点击OK时,将算出的1+4的结果添加到第一排的最后一个按钮文本中。当点击含有*号的按钮时,则第一排第二个按钮文本变为*号,当点击OK时,将算出的1*4的结果添

加到第一排的最后一个按钮文本中。 import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*;

public class c10_16 extends JApplet implements ActionListener {

JPanel p1=new JPanel(), p2=new JPanel(); JButton b1=new JButton(\"1\"),//创建按钮对象

b2=new JButton(), b3=new JButton(\"4\"), b4=new JButton(\"=\"), b5=new JButton(),

b6=new JButton(\"+\"), b7=new JButton(\"*\"), b8=new JButton(\"OK\"); Font f=new Font(\"Arial\设置字体和大小 Container cp=getContentPane(); public void init() {

//设置GridLayout布局

GridLayout myLayout1=new GridLayout(1,5,10,10); GridLayout myLayout2=new GridLayout(2,1,10,10); p1.setLayout(myLayout1); p2.setLayout(myLayout1); cp.setLayout(myLayout2);

p1.add(b1); p1.add(b2); p1.add(b3); p1.add(b4); p1.add(b5); p2.add(b6); p2.add(b7); p2.add(b8); cp.add(p1); cp.add(p2); b1.setFont(f); b2.setFont(f); b3.setFont(f); b4.setFont(f); b5.setFont(f); b6.setFont(f); b7.setFont(f); b8.setFont(f); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b6)

{ b2.setText(\"+\"); b5.setText(\"\"); } else

if(e.getSource()==b7)

{ b2.setText(\"*\"); b5.setText(\"\"); } else {

if(b2.getText()==\"+\") b5.setText(\"5\"); else

if(b2.getText()==\"*\") b5.setText(\"4\"); else

b5.setText(\"\"); } }

因篇幅问题不能全部显示,请点此查看更多更全内容