JAVA期末试题及答案 下载本文

《Java程序设计》课程试卷

1.使用Java语言编写的源程序保存时的文件扩展名是( )。

(A).class (B).java (C).cpp (D).txt 2.设int a=-2,则表达式a>>>3的值为( )。

(A)0 (B)3 (C)8 (D)-1

3.设有数组的定义int[] a = new int[3],则下面对数组元素的引用错误的是( )。

(A)a[0]; (B)a[a.length-1]; (C)a[3]; (D)int i=1; a[i];

4.在类的定义中可以有两个同名函数,这种现象称为函数( )。

(A)封装 (B)继承 (C)覆盖 (D)重载 5.在类的定义中构造函数的作用是( )。

(A)保护成员变量 (B)读取类的成员变量 (C)描述类的特征 (D)初始化成员变量 6.下面关键字中,哪一个不是用于异常处理语句( )。

(A)try (B)break (C)catch (D)finally 7.类与对象的关系是( )。

(A)类是对象的抽象 (B)对象是类的抽象

(C)对象是类的子类 (D)类是对象的具体实例 8.下面哪一个是Java中不合法的标识符( )。

(A)$persons (B)twoNum (C)_myVar (D)*point

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

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

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

10.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的( )。

(A)ArrayList myList=new Object( ) (B)List myList=new ArrayList( )

(C)ArrayList myList=new List( ) (D)List myList=new List( )

11.Java源文件和编译后的文件扩展名分别为( )

(A) .class和 .java (B).java和 .class (C).class和 .class (D) .java和 .java

12.在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成一些画图操作。 (A) start( ) (B) stop( ) (C) init( ) (D) paint( )

13.对于一个Java源文件,import, class定义以及package正确的顺序是: (A) package,import,class (B) class,import,package (C) import,package,class (D) package,class,import 14.下面哪个是非法的:

(A) int I = 32; (B) float f = 45.0; (C) double d = 45.0; (D) char c = ‘u’; //符号错 15.Java语言使用的字符码集是

(A) ASCII (B) BCD

(C) DCB (D) Unicode

16. 如果一个类的成员变量只能在所在类中使用,则该成员变量必须使用的修饰是

(A) public (B) protected (C) private (D) static 17.下面关于main方法说明正确的是

(A) public main(String args[ ]) (B) public static void main(String args[ ])

(C) private static void main(String args[ ]) (D) void main()

18.哪个关键字可以对对象加互斥锁?( )

(A) transient (B) synchronized (C) serialize (D) static 19.关于抽象方法的说法正确的是( )

(A)可以有方法体 (B) 可以出现在非抽象类中

(C) 是没有方法体的方法 (D) 抽象类中的方法都是抽象方法 20.java.io包的File类是

(A)字符流类 (B) 字节流类

(C) 对象流类 (D) 非流类

21.Java application中的主类需包含main方法,以下哪项是main方法的正确形参?( ) A、 String args B、String args[] C、Char arg D、StringBuffer args[] 22.以下代码段执行后的输出结果为( ) int x=-3; int y=-10; System.out.println(y%x); A、 -1 B、2 C、1 D、3

23.以下关于继承的叙述正确的是( )。 A、在Java中类只允许单一继承

B、在Java中一个类只能实现一个接口

C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口只允许单一继承

24. 若有定义:byte[] x={11,22,33,-66};

其中0≤k≤3,则对x数组元素错误的引用是( ) A)x[5-3] B)x[k] C)x[k+5] D)x[0]

25.paint()方法使用哪种类型的参数? ( ) A、Graphics B、Graphics2D C、String D、Color 26.以下哪个不是Java的原始数据类型( ) A、int B、Boolean C、float D、char

27.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( ) A) 隐藏 B) 重写 C) 重载

D) Java不支持此特性

28. 以下有关构造方法的说法,正确的是:( ) A. 一个类的构造方法可以有多个 B. 构造方法在类定义时被调用

C. 构造方法只能由对象中的其它方法调用。 D. 构造方法可以和类同名,也可以和类名不同

29.在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行( )。 A、init() B、start() C、destroy() D、stop()

30.给出下面代码,关于该程序以下哪个说法是正确的?( ) public class Person{

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

public static void main(String a[]) {

System.out.println(arr[0]); } }

A、编译时将产生错误 B、编译时正确,运行时将产生错误 C、输出零 D、输出空

31、有以下方法的定义,请选择该方法的返回类型( )。 ReturnType method(byte x, double y) { return (short)x/y*2; }

A、byte B、short C、int D、double

32.下列类定义中哪些是合法的抽象类的定义?( ) A、abstract Animal{abstract void growl();}

B、class abstract Animal{abstract void growl();} C、abstract class Animal{abstract void growl();}

D、abstract class Animal{abstract void growl(){System.out.println(“growl”);};}

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

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

A、import java.awt.*; B、package mypackage; C、class OtherClass{ } D、public class MyClass{ } 34. 设有下面两个赋值语句:

a = Integer.parseInt(“12”);

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

A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。 C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。 35.在编写Java Applet程序时,需在程序的开头写上( )语句。 A、import java.awt.* ; B、import java.applet.Applet ; C、import java.io.* ; D、import java.awt.Graphics ; 36.下列哪一项不属于Swing的顶层容器?( ) A)JApplet B)JTree C)JDialog D)JFrame

37. 为了使包ch4在当前程序中可见,可以使用的语句是( )。 A)import ch4.*; B)package ch4.*; C)ch4 import; D)ch4 package;

38. 请问所有的异常类皆继承哪一个类?( )。 A)java.io.Exception B)java.lang.Throwable C)java.lang.Exception D)java.lang.Error

39.进行Java基本的GUI设计需要用到的包是( )。 A)java.io B)java.sql C)java.awt D)java.rmi

40. 当点击鼠标或者拖动鼠标时,触发的事件是下列的哪一个?( ) A)KeyEvent B)ActionEvent C)ItemEvent D)MouseEvent 填空题:

1.数组x定义:String x[ ][ ]=new int[3][2]; x[0 ][0 ]=”abc”, x[0 ][1]=”12345”; 则 x.length 的值为______2___,x[0][1].length( ) 的值为__5___。 2、Java语言的变量由变量名、_变量类型、变量属性、_初值___组成。

3、当程序中需要抛出异常时,应该使用_throw子句,当需要在方法中声明可能抛出的异常类型,应该使用throws子句。 4、java.applet包中的Applet类定义了Applet与其运行环境之间的一个标准接口。 5、Java语言中提供的GUI功能主要由java.awt包和_java.swing_包中的类和接口实现。 6、Java源程序文件和字节码文件的扩展名分别为_.java___和__.class___。

7、Java语言的类型检查机制要求对于没有返回值的方法,在其前面必须加___void___进行说明。 8、 类是Java语言的一种引用数据类型。

9、 在Java语言中,所有的对象均通过new运算符分配内存,并对内存进行自动管理。 10、每个Java Application程序可以包括许多方法,但是必须有且只能有一个_ main()方法,统一格式为public static void main(String[] args){},它是程序执行的入口。

11、 若要在程序中定义一个公用的int型的类成员变量MAX_LENGTH,且该变量的值保持常数值1000,则定义该变量的语句是public

int MAX_LENGTH=1000;。

12、 子类必须通过_super_关键字调用父类有参数的构造函数。 13、 在Java语言中,所有的类都是类__Object__的子类。

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

15、 如果在Java程序中,需要使用java.util包中的所有类,则应该在程序开始处加上语句_import java.util.*_。 16、 下列程序的运行结果是__01234_______________ public class ex2 {

public static void main(String[] args) {

for(int cnt=0;cnt<10;cnt++) { if(cnt==5) break; System.out.print(cnt); }}}

17、 下列程序的运行结果是______4_________ import java.io.*;

public class ATest{

public static void main(String args[]) {

SubClass sb = new SubClass( ); System.out.println(sb.fun( )); }}

class SuperClass{ int a =24 , b =5 ; }

class SubClass extends SuperClass {

int fun( ) {

return a%b; } }

18、 分析下列程序,填上空白处的语句 class point //定义坐标类 { int x,y;

test(int a,int b) {x=a;y=b;} }

class rec_extends point __________//定义长方形类 {

int length,width;

rec(int a1,int b1,int l,int w) {super(a1,b1);

length=l;width=w; }}

class test

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

___test r1=new test(“0”, “0”, “10”, “20”)__________________ //定义名为r1的对象同时初始化坐标为0,0,长度为10,宽度为20 r1.print(); }}

19、Java 源文件中最多只能有__________1___________个公共类,其它类的个数不限。 20、在 Java 中所有实现的多维数组,实际上是由一维数组构成的_数组的数组。 21、设 x =15 ,则表达式 ( x + + )/4 的值是___3_______________。

22、___抽象______方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 23、 ____run()______方法用于定义线程的执行体. _____start()______方法用于启动线程. 24、String str1=”abc”;

String str2=new String(“abc”);

System.out.println(str1==str2); 则程序运行后输出结果为:_____fault________

25、Java语言中,有一个类是所有类或接口的父类,这个类的名称是 ____Object______。 26、当启动 Applet 程序时,首先调用的方法是int()。

27、Java语言是一种完全的 面向对象的,适用于网络环境 程序设计语言。

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

29. 设 int x = 2 ,则表达式 (x++)/3 的值是_____0_______________。

30. Java提供的访问权限修饰符有4个,即:public、_private、protected和友元。 31. Java中有两种常用的字符串类,一个是String,另一个是_stringBuffer。

32. Java实现多线程的方法有两种,一种方法是通过创建_____________________类的子类实现多线程,另一种方法是定义一个实现 _____________________接口的类。

33. Java不支持多继承。但它允许一个类同时实现多个__接口____,这就相当于部分实现了多继承。

34. Java源文件中,__________import___________语句位于package语句之后、类定义之前。Package、import、class 35. __OutputStreamWriter__类是OutputStream类的子类,用来处理以文件作为数据输出的数据流。 三、编程题:

1.编写一个输出\!\的程序,用两种方式实现(Application、Applet)。 1.application程序 public class a {

public static void main(String args[]) {

System.out.println(\} }

2.applet程序

public class b extends java.applet.Applet {

public paint(java.awt.Graphics g) {

g.outstring(\} }

2.编写一个Java Application,接收从键盘输入的10个整数,并输出其中的最大、最小以及平均值。要求:将计算功能定义在一个类中,由主类接收输入,再用数组的方式传递给实现计算的类的方法,再输出结果。public class Complex{ private float shibu; private float xubu; Complex() {

this(0,0); }

Complex(float shibu,float xubu){ this.shibu=shibu; this.xubu=xubu; }

public void Add(Complex p) {

Complex result=new Complex(); result.shibu=this.shibu+p.shibu; result.xubu=this.xubu+p.xubu;

System.out.print(\加法果为:\}

public static void main(String[] args) { Complex fushu1=new Complex(1,2); Complex fushu2=new Complex(3,4); fushu1.Add(fushu2); }

}

4.求10个数中的最大值并输出。 import java.util.Scanner;

public class Test {

public static void main(String args[]){

int num[]=new int[10]; int max;

Scanner scan=new Scanner(System.in); System.out.print(\请输入10个数字:\for(int i=0; i<10; i++){ num[i]=scan.nextInt(); }

max=num[0];

for(int i=1; i<10; i++){ if(max

System.out.println(\最大值是\}

5.建立一个学生类,其中成员变量为学号,姓名,及三门课成绩。另外建立一个包含主方法的类,定义2个学生类的对象,求出这2个学生三门课总分的最高分,并将最高分这个学生的信息输出。public class Student{ private String stu_id; private String stu_name; private float math; private float chinese; private float computer;

public void setStu_id(String stu_id){ this.stu_id=stu_id; }

public String getStu_id(){ return stu_id; }

public void setStu_name(String stu_name){ this.stu_name=stu_name; }

public String getStu_name(){ return stu_name; }

public void setMath(float math){ this.math=math; }

public float getMath(){ return math; }

public void setChinese(float chinese){ this.chinese=chinese; }

public float getChinese(){

return chinese; }

public void setComputer(float computer){ this.computer=computer; }

public float getComputer(){ return computer; } }

//主方法的类 public class Start{

public static void main(String[] args){ Student stu1=new Student(); stu1.setStu_id(\ stu1.setStu_name(\张三\ stu1.setMath(89.5f); stu1.setChinese(70f); stu1.setComputer(98f); Student stu2=new Student(); stu2.setStu_id(\ stu2.setStu_name(\李四\ stu2.setMath(79.5f); stu2.setChinese(90f); stu2.setComputer(68f);

float stu1Sum = stu1.getMath()+stu1.getChinese()+stu1.getComputer(); float stu2Sum = stu2.getMath()+stu2.getChinese()+stu2.getComputer(); if(stu1Sum > stu2Sum){

System.out.println (\总分最高分为:\ System.out.println (\学号:\ System.out.println (\姓名:\ System.out.println (\数学:\ System.out.println (\语文:\ System.out.println (\计算机:\ }else if(stu1Sum < stu2Sum){

System.out.println (\总分最高分为:\ System.out.println (\学号:\ System.out.println (\姓名:\

System.out.println (\数学:\ System.out.println (\语文:\ System.out.println (\计算机:\ }else{

System.out.println (\总分一样高为:\ System.out.println (\学号:\ System.out.println (\姓名:\ System.out.println (\数学:\ System.out.println (\语文:\ System.out.println (\计算机:\ System.out.println (\学号:\ System.out.println (\姓名:\ System.out.println (\数学:\ System.out.println (\语文:\ System.out.println (\计算机:\ } } }

6.编写一个Application,接受用户输入的帐号和密码,给三次输入机会.

7.定义一个圆类circle,它有一个变量radius(半径)、若干个构造函数和一个求圆的面积的方法。在主类test的main()方法中随机生成一个100以内的整数,通过构造函数的参数传递给radius,调用圆类circle中的方法计算并输出圆的面积。

8.编写Applet程序模拟屏幕保护程序,在屏幕上随机画圆。圆的位置和半径是随机的。50毫秒后再随机画下一个圆,一旦画满了50个圆,就清除屏幕。然后重新开始画圆。

9.请编写一个实现如下功能的Application:比较从键盘输入的两个整数是否相等,并根据比较结果显示“相等”或“不相等”。 import java.util.Scanner;

public class COMPare {

public static void main(String args []){

Scanner tr=new Scanner(System.in);

int b=tr.nextInt();

int a=tr.nextInt();

if(a==b)

System.out.println(\相等\

else

System.out.println(\不相等\

}

}

10.请编写一个Applet,其中包含两个标签(一个用于给出提示信息,另一个用来输出结果)和一个文本框。要求从文本框中获取用户给出的一个整数,并将该数的绝对值在标签上输出。

11.编写一个Application,利用数组求出”HELLO”,”JAVA””PROGRAM”三个字符串的平均长度。 class Average {

public static void main(String args[]) { String array[] = new String[3]; array[0] = \array[1] = \array[2] = \

int total = array[0].length(); total += array[1].length(); total += array[2].length();

System.out.println(\平均字符串长度为: \} }

12.SQL Server 中有一个名为 friends 的表,如下图,利用JDBC编程实现显示表中记录信息。

JAVA复习卷

一、选择题(2’*15=30’)

1、如下哪个是Java中的标识符( )

A、fieldname B、super

C、3number D、#number

2、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 3、下面的代码段执行之后count的值是什么( )

int count = 1;

for (int i = 1; i <= 5; i++) { }

System.out.println(count); A、5

B、1

C、15

D、16

count += i;

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

( )。

A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 5、下列程序段执行后的结果是( )。

String s = new String(\for (int i=0; i

A) aceg B) ACEG C) abcdefg D) abcd 6、下面程序段执行后b的值是( )。

Integer integ =new Integer(9);

boolean b = integ instanceof Object;

A) 9 B) true C) 1 D) false

7.关于 for循环和 while循环的说法哪个正确? ( )

A.while循环先判断后执行,for循环先执行后判断。

B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换

D.两种循环结构中都必须有循环体,循环体不能为空 8.关于对象成员占用内存的说法哪个正确? ( )

A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对

9.关于继承的说法正确的是: ( )

A、子类将继承父类所有的属性和方法。 B、子类将继承父类的非私有属性和方法。 C、子类只继承父类public方法和属性 D、子类只继承父类的方法,而不继承属性 10.覆盖与重载的关系是 ( )

A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中 B.覆盖方法可以不同名,而重载方法必须同名 C.final修饰的方法可以被覆盖,但不能被重载 D.覆盖与重载是同一回事

11、下面哪一个import命令可以为我们提供编写网络应用程序的类()

A、import java.sql.*; B、import java.util.*; C、import java.io.*;

D、import java.net.*;

12、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是( A、p.add(b);

B、p.add(b,\

C、p.add(b,\

D、b.add(p,\

13、Frame对象默认的布局管理器是( )

A、FlowLayout B、BorderLayout

C、CardLayout

D、null

) 14、如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象( )

A、FileInputStream C、DataOutputStream

B、FileOutputStream

D、FileWriter

15、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( )。

import java.io.*; public class Test {

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

A) ABCABC B) ABCDE C) Test D) ABCDE ABCDE ABCDE 二、填空题(1’*10=10’)

1、如果将类MyClass声明为public,它的文件名必须是 MyClass.java 才能正常编译。 2.面向对象有三大特点分别是继承、 封装 、 多态 。 3、设 x = 2 ,则表达式 ( x + + )/3 的值是 0 。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间 5、Java中用于两个数相等比较的运算符是:(==),用于不相等比较的运算符是(< >)。

6、在Java中声明一个字符串类型的变量str的语句是: String str; ,定义一个具有10个元素的整型数组a的语句是: int [] a=new int[10]; 。

7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是 20+40+60=120 。 int s = 0 ;

for (int i = 0 ; i < MyIntArray.length ; i + + ) if ( i % 2 = = 1 )

s += MyIntArray[i] ;

System.out.println(s);

8、定义接口的保留字是( interface)。

9、异常处理是由(try)、(catch)和finally块三个关键所组成的程序块。

try { }

catch(IOException e) { }

System.out.println(e.toString()); String s=\byte b[]=s.getBytes();

FileOutputStream file=new FileOutputStream(\file.write(b); file.close();

10.Socket通常也称为 (套接字),用于描述(IP地址) 和 (端口)。 三、读程题(6’*5=30’) 1、以下程序的输出结果为: public class Person { }

Peter is 17 years old! 2、输出结果为: public class Sum{

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

static void calculate (int j){ }

j is : 10 j in calculate() is : 20 At last j is : 10 3、以下程序输出的结果为:

abstract class Shape { //定义抽象类Shape和抽象方法display }

class Circle extends Shape {

void display() {

//实现抽象类的方法

abstract void display(); }

for (int i = 0;i<10;i++)

j++; int j=10;

System.out.println(\calculate(j);

System.out.println(\String name; int age;

public Person(String name, int age) { }

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

Person c = new Person(\

System.out.println(c.name + \this.name = name; this.age = age;

System.out.println(\

}

}

System.out.println(\

class Rectangle extends Shape {

void display() { //实现抽象类的方法 System.out.println(\

}

class Triangle extends Shape { }

public class AbstractClassDemo{ } Circle Rectangular Triangle

4、以下程序的输出结果为: public class Tom {

public void setWeight(float weight) { }

private void out() { }

public static void main(String[] args) {

Tom.name = \汤姆猫\Tom cat = new Tom(); cat.setWeight(20); cat.out();

System.out.println(name + \体重:\斤\this.weight = weight; private float weight; private static String name;

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

(new Circle()).display(); //定义无名对象来调用对应的display方法 (new Rectangle()).display(); (new Triangle()).display(); void display() { //实现抽象类的方法 }

System.out.println(\}

}

}

汤姆猫体重:20.0斤 5、以下程序的输出结果为: public class Test{

public static void main(String args[]) { new Student(\ new Student(\ new Student(\

System.out.println(\ Student.print(); } }

class Student {

protected String name; protected char sex; protected int chinese; protected int english; protected Student next; static Student list;

Student (String name, char sex, int chinese, int english) { this.name=name; this.sex=sex;

this.chinese=chinese; this.english=english; this.next=list; list=this; }

static void print() { Student friend=list; if (friend==null)

System.out.println(\ else { do{

System.out.println(friend.toString()); friend=friend.next; }while(friend!=null); }

}

public String toString() {

return new String(name+\ } }

name sex chinese english Mary f 76 86 Jack m 66 89 Tom m 90 88 四、简答题(4’*5=20’) 1.

JAVA的基本数据类型有那些? String是不是基本类型?

float,int,char,byte,double,long,short,boolean。string不是基本类型 1、 什么是继承? 2、

3、Java I/O中字符流和字节流的区别?

4.创建线程的两种方法

5.抽象类和接口的区别

五、编程题(3’+7’=10’) 1、按以下要求编写程序

(1) 创建一个Rectangle类,添加width和height两个成员变量 (2) 在Rectangle中添加两种方法分别计算矩形的周长和面积 (3) 编程利用Rectangle输出一个矩形的周长和面积

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分别为实部和虚部的数据。

一、AADAA BBBBA DCBAD

二、MyClass.java 封装,多态 0 2 ==,<>

String str; int [] arr = new int[10]; 120 interface try catch 套接字 IP地址 端口 三、1、Peter is 17 years old! 2、j is : 10

j in calculate() is : 20

At last j is : 10 3、Circle

Rectangular Triangle

4、汤姆猫体重:20.0斤 5、

name sex chinese english Mary f 76 86 Jack m 66 89 Tom m 90 88

四、1、float,int char,byte,double,long,short,boolean。string不是基本类型

2、通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类,并且允许多层的继承关系。

3、java流在处理上分为字符流和字节流。字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组

4、a.Thread类的子类创建线程包括继承Thread类,重写run方法,在应用类中创建Thread之类的对象和调用start方法。 B.使用Runnable接口包括实现Runnable接口,实现run方法,创建THread类对象,采用实现Runnable接口类的对象作为参数和调用start方法。

5、a。接口中的所有方法都是抽象的,而抽象类可以定义带有方法体的不同方法。 b。一个类可以实现多个接口,而只能继承一个抽象父类。

c。接口与实现它的类不构成继承体系,而抽象类是属于一个类的继承体系。

d。接口中的方法默认是public abstract的,而成员变量默认是public static常量。 e。implements关键字用于实现接口,extends关键字用于继承。

五、1、public class Rectangle {

float width, height;

public Rectangle(float width, float height) { }

public float getLength(){ }

public float getArea(){ }

return this.width * this.height; return (this.width + this.height) * 2; this.width = width; this.height = height;

}

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

Rectangle rect = new Rectangle(10, 20);

System.out.println(\周长是:\System.out.println(\面积是:\

2、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(\第一个复数:\ g.drawString(\第二个复数:\ g.drawString(\两复数之和:\ } }

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+\ }

《JAVA程序设计》期末考试试题 (一)

一、单选择题

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

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

3、不允许作为类及类成员的访问控制符的是( )。 A. public B. private C. static D. protected

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

A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( )

二、填空题

1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、 编译生成字节码 和 解释运行字节码 。

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

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

4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。

5、 抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 最终(final) 方法是不能被当前类的子类重新定义的方法。

6、创建一个名为 MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为: 应该在程序第一句 。

7、设有数组定义: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);

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

三、写出下面程序的运行结果 1、 import java.io.*;

public class abc {

public static void main(String args [ ]) {

AB s = new AB(\

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

class AB { String s1; String s2;

public AB(String str1, String str2) {

s1 = str1; s2 = str2; }

public String toString( ) {

return s1+s2; } }

运行结果: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 = 180 3、import java.io.* ; public class abc {

public static void main(String args[ ]) {

System.out.println(\

}

}

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=60 b=20

c=30

《JAVA程序设计》期末考试试题 (六)

一、填空题

1.定义类的保留字是( class ),定义接口的保留字是( interface )。 2.Socket通常也称为 ( 套接字 ),用于描述( IP地址 ) 和 ( 端口 )。 3.线程的优先级在( 1 )至( 10 )之间,数值越大( 任务越紧急 )。 4.构造方法是一种特殊的成员方法,构造方法名与( 类名 ) 相同。 5.Java语言只允许单继承,指每个类只能有一个 ( 父类 )。

6.Java源程序的扩展名是( .java ),经过编译后的程序的扩展名是( .class )。

7. 在一个时间只能由一个线程访问的资源称为 ( 临界资源 ) 。访问临界资源的代码( 临界代码 )。 8. 在多线程系统中,多个线程之间有 ( 同步 ) 和 ( 互斥 ) 两种关系。

二、选择题

1.关于选择结构下列哪个说法正确? ( ) A.if语句和 else语句必须成对出现 B.if语句可以没有else语句对应

C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句

2.while循环和 do…while循环的区别是: ( )

A.没有区别,这两个结构任何情况下效果一样 B.while循环比 do…while循环执行效率高

C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 3.关于 for循环和 while循环的说法哪个正确? ( ) A.while循环先判断后执行,for循环先执行后判断。

B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换

D.两种循环结构中都必须有循环体,循环体不能为空 4.下列修饰符中与访问控制无关的是 ( ) A.private C.protected

B.public D.final

5. void的含义: ( ) A.方法没有返回值 C.没有意义

B. 方法体为空

D. 定义方法时必须使用

6. return语句: ( ) A.只能让方法返回数值

B.方法都必须含有 D.不能用来返回对象

C.方法中可以有多句return

7.关于对象成员占用内存的说法哪个正确? ( ) A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对 8.下列说法哪个正确? A.不需要定义类,就能创建对象 B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象 D、属性必须是简单变量

9.下列说法哪个正确? ( ) A、一个程序可以包含多个源文件 B、一个源文件中只能有一个类 C、一个源文件中可以有多个公共类 D、一个源文件只能供一个程序使用

10.关于方法main()的说法哪个正确?( ) A.方法main()只能放在公共类中 B main()的头定义可以根据情况任意更改 C.一个类中可以没有main()方法

D.所有对象的创建都必须放在main()方法中

11.构造函数何时被调用? ( ) A、创建对象时 C、使用对象的方法时

B、类定义时 D、使用对象的属性时

12. 抽象方法: ( ) A、可以有方法体 B、可以出现在非抽象类中 C、是没有方法体的方法

D、抽象类中的方法都是抽象方法

13.关于继承的说法正确的是: ( ) A、子类将继承父类所有的属性和方法。 B、子类将继承父类的非私有属性和方法。 C、子类只继承父类public方法和属性 D、子类只继承父类的方法,而不继承属性 14.关于构造函数的说法哪个正确? ( ) A、一个类只能有一个构造函数

B、一个类可以有多个不同名的构造函数 C、构造函数与类同名

D、构造函数必须自己定义,不能使用父类的构造函数 15. this和super: A、都可以用在main()方法中 B、都是指一个内存地址 C、不能用在main()方法中 D、意义相同

16.关于super的说法正确的是: A、是指当前对象的内存地址

B、是指当前对象的父类对象的内存地址 C、是指当前对象的父类 D、可以用在main()方法中

17.覆盖与重载的关系是 ( )

A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中 B.覆盖方法可以不同名,而重载方法必须同名 C.final修饰的方法可以被覆盖,但不能被重载 D.覆盖与重载是同一回事

18.关于接口哪个正确? ( ) A、实现一个接口必须实现接口的所有方法 B.一个类只能实现一个接口 C.接口间不能有继承关系 D.接口和抽象类是同一回事

19.异常包含下列哪些内容? ( ) A.程序执行过程中遇到的事先没有预料到的情况 B.程序中的语法错误 C.程序的编译错误 D.以上都是

20. 对于已经被定义过可能抛出异常的语句,在编程时: ( ) A、必须使用try/catch语句处理异常,或用throws将其抛出 B.如果程序错误,必须使用 try/catch语句处理异常 C.可以置之不理

D.只能使用try/catch语句处理

21. 字符流与字节流的区别在于( ) A.前者带有缓冲,后者没有 B.前者是块读写,后者是字节读写 C. 二者没有区别,可以互换使用 D. 每次读写的字节数不同

22.下列流中哪个不属于字节流 ( ) A.FileInputStream B.BufferedInputStream C. FilterInputStream D. InputStreamReader 三、程序填空题 1.public class Sum{

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

static void calculate (int j){ }

输出结果为:

j is : (1) j in calculate() is : (2) At last j is : (3)

}

for (int i = 0;i<10;i++)

j++; int j=10;

System.out.println(\calculate(j);

System.out.println(\

System.out.println(\

答案:(1) 10; (2) 20; (3) 10。 2. 按要求填空

abstract class SuperAbstract{ }

interface AsSuper { }

abstract class SubAbstract extends SuperAbstract implements AsSuper {

public void b(){…} }

public class InheritAbstract extends SubAbstract{ }

在以上这段程序中:

抽象类有:SuperAbstract和 (1) (写出类名) 非抽象类有: (2) (写出类名) 接口有: (3) (写出接口名)

AsSuper中的x()方法是(4)方法,所以在InheritAbstract中必须对它进行(5) 答案:

(1) SuperAbstract; (2) InheritAbstract; (3) AsSuper;

public void x(){…} public int c(int i ) {…} public String f(){…}

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

InheritAbstract instance=new InheritAbstract(); instance.x(); instance.a(); instance.b(); instance.c(100);

System.out.println(instance.f()); abstract String f(); void x(); void a(){…} abstract void b(); abstract int c(int i);

(4) 抽象; (5) 覆盖和实现。 3. 按注释完成程序 public class Leaf { }

输出结果为 i = (3) 答案: (1) this; (2) new Leaf(); (3) 3

4. 按注释提示完成文件复制的程序 //FileStream源代码如下: import java.io.*; class FileStream {

public static void main(String args []) { private int i = 0; //此属性值用于检验

Leaf increment(){ //定义方法increment(),返回值是Leaf类的对象 }

void print() { }

public static void main(String args[]){

Leaf x = (new Leaf();); //创建Leaf类的对象x x.increment().increment().increment().print(); System.out.println(\

i++;

return (this) ;//将当前对象的地址作为返回值返回

}//多次调用方法increment(),返回的都是x的地址,i 值表示调用次数

try {

File inFile = new File(\//指定源文件 File outFile = new File(\ FileInputStream fis =(1);

FileOutputStream fos = new FileOutputStream(outFile);

int c;

//指定目标文件

//逐字节从源文件中输入,再输出到fos流

while ((c = fis.read ())!=-1)

fos.write(c);

fis.close();

fos.close();

}

catch (Exception e) {

System.out.println(\

}

} } 答案:

(1) new FileInputStream(inFile); (2) fos.write(c); 5. 阅读程序,给出结果:

// AbstractClassDemo.java源代码如下:

abstract class Shape { //定义抽象类Shape和抽象方法display }

class Circle extends Shape { }

class Rectangle extends Shape {

void display() { //实现抽象类的方法 System.out.println(\

}

class Triangle extends Shape { }

public class AbstractClassDemo{ }

输出结果是 ?

答案:(1) Circle; (2) Rectangle; (3) Triangle。

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

(new Circle()).display(); //定义无名对象来调用对应的display方法 (new Rectangle()).display(); (new Triangle()).display(); void display() { //实现抽象类的方法 }

System.out.println(\}

void display() { }

//实现抽象类的方法

abstract void display();

System.out.println(\

一、选择题(20题,每题2分,共40分)

1.在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送 ( D ) A、调用语句 B、命令 C、口令 D、消息

2.Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点:( B ) A、安全性 B、多线程 C、跨平台 D、可移值

3.编写和运行Java applet程序与编写和运行Java application程序不同的步骤是:(B ) A、编写源代码

B、编写HTML文件调用该小程序,以.html为扩展名存入相同文件夹 C、编译过程 D、解释执行

4.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用____个比特位。( B ) A、8 B、16 C、32 D、64

5.关于下列程序段的输出结果,说法正确的是:( D 基本类型数值数据的默认初始值为0 ) public class MyClass{ static int i;

public static void main(String argv[]){ System.out.println(i); } }

A、有错误,变量i没有初始化。 B、null C、1 D、0

6.下列代码的执行结果是:( B ) public class Test3{

public static void main(String args[]){ System.out.print(100%3); System.out.print(\System.out.println(100%3.0); } }

A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0

7.下列程序段的输出结果是:( B ) void complicatedExpression(){ int x=20, y=30; boolean b;

b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b); } A、true B、false C、1 D、0

8.给出下列代码片段:( D ) if(x>0){System.out.println(\else if(x>-3){ System.out.println(\else {System.out.println(\请问x处于什么范围时将打印字符串“second”? A、x>0 B、x>-3 C、x<=-3 D、x<=0 &&x>-3

9.若要把变量声名为暂时性变量,应使用如下哪种修饰符?(C) A、protected B、provate

C、transient (临时变量) D、volatile (共享变量)

10.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型 或顺序各不相同,传回的值也可以不相同,这种面向对象程序特性称为:( C ) A、隐藏 B、覆盖 C、重载

D、Java不支持此特性

11.如要抛出异常,应用下列哪种子句?( B ) A、catch B、throws C、try D、finally

12.在使用interface声明一个接口时,只可以使用____修饰符修饰该接口。( D ) A、private B、protected C、private protected D、public

13.下列代码的输出结果是 : ( A ) class Parent{ void printMe() {

System.out.println(\ } };

class Child extends Parent { void printMe() {

System.out.println(\ }

void printall() { super.printMe(); this.printMe(); printMe(); } }

public class Test_this {

public static void main(String args[]) { Child myC=new Child(); myC.printall(); } }

A、parent child child B、parent child parent C、parent child D、编译错误

14.为读取的内容进行处理后再输出,需要使用下列哪种流?A、File stream B、Pipe stream C、Random stream

) (D D、Filter stream

15.为实现多线程之间的通信,需要使用下列哪种流才合适?( D ) A、Filter stream B、File stream

C、Random access stream D、Piped stream

16.Swing与aWT的区别不包括 :( D ) A、Swing是由纯Java实现的轻量级构件 B、Swing没有本地代码 C、Swing不依赖操作系统的支持 D、Swing支持图形用户界面

17.在编写Java applet程序时,若需要对发生事件作出响应和处理,一般需要在程序的 开头写上____语句。 (D ) A、import java.awt.*; B、import java.applet.*; C、import java.io.*; D、import java.awt.event.*;

18.注释的基本原则不包括:( D ) A、注释应该增加代码的清晰度 B、注释要简洁 C、在写代码之前写注释 D、尽量给每一条语句加注释

19.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(A、输入流和输出流 (方向) B、字节流和字符流 (内容) C、节点流和处理流 (分工) 20. 以下程序的运行结果为( B ) public class IfTest{

public static void main(String args[]){ int x=3; int y=1; if(x==y)

System.out.println(\else

System.out.println(\} }

A)Not equal B)Equal C)无输出 D)编译出错

二.填空题(每空1.5分,共15分)

C ) 1.java.io包中的_ObjectInputStream__________和_ObjectOutputStream________类主要用于对对象(Object)的读写。(serializable)

2.在编写异常处理的Java程序中,每个catch语句块都应该与__try_____语句块对应,使得用该语句块来启动Java的异常处理机制。 3. 顺序执行以下两个语句的输出结果是:10____。 String s=\我喜欢学习Java!\System.out.println(s.length());

4. Java语言通过接口支持_多重___继承,使类继承具有更灵活的扩展性。 5. 实例化对象:就是创建一个对象。用__new_____运算符来实现对象的实例化。

6.我们用_int______来定义一个整数,用__char____来定义一个字符类型,称为原始数据类型。

7. 当用户在TextField中输入一行文字后,按回车,实现__ ActionListner_______接口可实现对事件的响应。 8. 包含Swing构件的Applet(小应用程序)应该是__Applet____类的子类。 三、写出下列程序的运行结果(每空5分,共15分) 1.下列程序的输出结果为: public class TestApple { int i=0; Apple(int i){ this.i=i; }

Apple increament(){ i++; return this; }

void print(){

System.out.println(\ }

public static void main(String[] args) { Apple redapple=new Apple(1000);

redapple.increament().increament().print(); } i=1002 2. 下列程序的输出结果为: class SuperClass{

private int n; SuperClass(){

System.out.println(\ }

SuperClass(int n){

System.out.println(\ } }

class SubClass extends SuperClass{

private int n; SubClass(int n){ super();

System.out.println(\ this.n=n; }

SubClass(){

super(300);

System.out.println(\ } }

public class TestSuperSub {

public static void main(String args[]){ SubClass sc=new SubClass(400); }

} 结果:SuperClass() SubClass(400)

说明对象先调用SubClass的有参构造函数,接着调用Super()的无参构造函数,输出SuperClass() ,接着输出SubClass(400) 3. 下列程序的输出结果为: class FatherClass{

public int value; public void f(){

value=100;

System.out.println(\ } }

class ChildClass extends FatherClass{ public int value; public void f(){

super.f(); value=200;

System.out.println(\ System.out.println(value); System.out.println(super.value); } }

public class TestInherit {

public static void main(String[] args) { ChildClass cc=new ChildClass(); cc.f(); }

} FatherClass.value=100 ChildClass value=200 200 100 四、程序设计(每题10分,共30分)

1.编写一个“Student”类,该类拥有属性:校名、学号、性别、出生日期。方法包含设置姓名和成绩(setName(),setScore())。再编写“Student”类的子类:Undergraduate(大学生)。Undergraduate类除拥有父类属性和方法外,还有其自己的属性和方法:附加属性包括系(department)、专业(major);方法包含设置系别和专业。(setDepartment(),setMajor())。 2.从键盘或者命令行输入3个数,求这三个数的最大值。 3.设计一个含有Panel的自定义的Frame类,形式如下所示:

参考答案 一、选择题 DBBBD BBDCC BDADD DCDCB 二、填空题

1. ObjectInputStream ObjectOutputSteam 2. Try 3. 10 4. 多重 5. new 6. Int,char 7. ActionListner 8. Applet

三、写出下列程序的运行结果 1. 结果为:i=1002 2. 结果为: SuperClass() SubClass(400) 3. 输出结果是: FatherClass.value=100 ChildClass value=200 200

100

四、程序设计

1.编写一个“Student”类,该类拥有属性:校名、学号、性别、出生日期。方法包含设置姓名和成绩(setName(),setScore())。再编写“Student”类的子类:Undergraduate(大学生)。Undergraduate类除拥有父类属性和方法外,还有其自己的属性和方法:附加属性包括系(department)、专业(major);方法包含设置系别和专业。(setDepartment(),setMajor())。 1. class Student {

String name=\湖南****学院\ int sNum=888888; String sex=\男\

String birth=\ String sname; int Score;

void setName(String a){ sname=a; }

void setScore(int b){ Score=b; }

void show(){

System.out.println(\所在学校:\ System.out.println(\学号:\ System.out.println(\性别:\ System.out.println(\生日:\ System.out.println(\姓名:\ System.out.println(\成绩:\ } }

class Undergraduate extends Student{ String department; String major;

void setDeparment(String c){ department=c; }

void setMajor(String d){ major=d; }

void show1(){ super.show();

System.out.println(\系部:\ System.out.println(\专业:\

} }

class Student{

public static void main(String arg[]){ Student A=new Student();

Undergraduate B=new Undergraduate(); B.setName(\许翼\ B.setScore(95);

B.setDeparment(\信息工程系\ B.setMajor(\计算机网络\ B.show1(); } }

2.从键盘或者命令行输入3个数,求这三个数的最大值。 2. import javax.swing.JOptionPane; public class MaxNum {

public static String sum(int a,int b,int c,int d){ if(a>b){ d=a; } if(b>d){ d=b; } if(c>d){ d=c; }

return \你输入的三个数字中,最大的数是\ }

public static void main(String[] args) { int number1,number2,number3; try{

number1=Integer.parseInt(JOptionPane.showInputDialog(\ number2=Integer.parseInt(JOptionPane.showInputDialog(\ number3=Integer.parseInt(JOptionPane.showInputDialog(\ System.out.println(sum(number1,number2,number3,0)); }catch(NumberFormatException ne){

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

System.exit(0); }

the first Number: \the second Number: \the third Number: \ }

3. import java.awt.*;

public class TestCenterPanel {

public static void main(String args[]) { new MyFrame3(300,300,600,400,Color.BLUE); } }

class MyFrame3 extends Frame{ //private Panel p;

MyFrame3(int x,int y,int w,int h,Color c){ super(\ setLayout(null); setBounds(x,y,w,h); setBackground(c);

Panel p = new Panel(null); p.setBounds(w/4,h/4,w/2,h/2); p.setBackground(Color.pink); add(p);

setVisible(true); } }