java期末考试试卷及答案文库_JAVA期末考试试题及答案.docx

x[j+1])

{ w=x[j]; x[j]=x[j+1]; x[j+1]=w; }

/* if(i==1||i==2) ShowArray(x); if(i==2) break; */

}

}

public static void ShowArray(int b[])

{

for(int i=0; iy; System.out.println("x>y=="+flag); flag=z>w; System.out.println("z>w=="+flag);

}

}

四、问答题:(每题 5 分,)

1. Java的接口和 C++ 的虚类的相同和不同处。

由于 Java 不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性, 现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性, 因为接口中没有任何实现代码。 当一个类实现了接口以后, 该类要实现接口里

面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static ,所有方法默认情况下是 public.一个类可以实现多个接口。

2. 垃圾回收的优点和原理。并考虑2 种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使 c++ 程序员最头疼的存管理的问题迎刃而解,它使得Java 程序员在编写程序的时候不再需要考虑存管理。由于有个垃圾回收机制, Java中的对象不再有 "作用域" 的概念,只有对象的引用才有 "作用域"。垃圾回收可以有效的防止存泄露,有效的使用可以使用的存。垃圾回收器 通常是作为一个单独的低级别的线程运行,不可预知的情况下对存堆中已经死亡的或 者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个

对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

3,谈谈 final, finally, finalize 的区别。

Final-修饰符(关键字) 如果一个类被声明为final,意味着它不能再派生出新的 子类,不能作为父类被继承。因此一个类不能既被声明为abstract 的,又被声明为final 的。将变量或方法声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值, 而在以后的引用中只能读取, 不可修改。被声明为 final 的方法也同样只能使用,不能重载。

Finally-再异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常, 那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。

Finalize-方法名。 Java 技术允许使用finalize()方法在垃圾收集器将对象从存 中清除出去之前做必要的清理工作。 这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

4,数组有没有 length ()这个方法?String 有没有 length ()这个方法?举例说明使用方法?

数组没有 length ()这个方法,有 length 的属性。

String 有有 length ()这个方法。

5. Java中的异常处理机制的简单原理和应用。

当 JAVA程序违反了 JAVA的语义规则时, JAVA 虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2 种情况。一种是 JAVA类库置的语义检查。例如数组下标 越界 , 会 引 发 IndexOutOfBoundsException ; 访问 null 的 对象 时会 引发NullPointerException. 另一种情况就是 JAVA允许程序员扩展这种语义检查, 程序员可以创建自己的异常,并自由选择在何时用throw 关键字引发异常。所有的异常都是java.lang.Thowable 的子类。

五、程序设计:(每题 11 分,共 33 分)

1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节

截取的字符串。但是要保证汉字不被截半个,如 "我 ABC"4,应该截为 "我 AB",输入 "我 ABC 汉 DEF",6,应该输出为 "我 ABC"而不是"我 ABC+汉的半个 "。

2、编程求解:所有两位整数能被3 整除的数的和,以及不能被3 整除的数的各位数字之和。

3、设计一个程序求解e 的值。精度达到 1.0e-6,

4、请设计一个对 N 个数进行排序的程序

一、选择题(每道题只有一个正确答案,每小题2 分,共 30 分) 15 道题

1、关于 Java语言叙述错误的是: ( C )

A. Java语言具有跨平台性

B. Java是一种面向对象的语言

C. Java语言中的类可以多继承

D. Java的垃圾收集机制自动回收程序已不再使用的对象2、以下叙述正确的是: ( B )的确台 a A.构造方法必须是 public 方法

B.main 方法必须是 public 方法

C. Java应用程序的文件名可以是任意的D.构造方法应该声明为void 类型

3、关于 Java中数据类型叙述正确的是: ( B )

A、整型数据在不同平台下长度不同

B.boolean 类型数据只有 2 个值, true 和 false C.数组属于简单数据类型

D. Java中的指针类型和 C 语言的一样

4、设 int x=1,float y=2 ,则表达式 x / y 的值是:( D )

A.0 B.1 C.2

D.以上都不是

5、以下语句有语法错的是: ( A )

A.int x=1 ;y=2 ;z=3

B.for (int x=10,y=0 ;x>0;x++);

C.while (x>5);

D.for(; ;);

6、关于类和对象的叙述正确的是: ( A )

A. Java的类分为两大部分:系统定义的类和用户自定义的类B.类的静态属性和全局变量的概念完全一样,只是表达形式不同C.类的成员至少有一个属性和一个方法

D.类是对象的实例化

7、以下有关构造方法的说法,正确的是: ( A )

A.一个类的构造方法可以有多个 B.构造方法在类定义时被调用 C.构造方法只能由对象中的其它方法调用 D.构造方法可以和类同名,也可以和类名不同

8、以下有关类的继承的叙述中,正确的是: ( D ) A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性B.子类只能继承父类的方法,不能继承父类的属性 C.子类只能继承父类的非私有属性,不能继承父类的方法 D.子类不能继承父类的私有属性

9、下列属于容器的组件有: ( B )

A.JButton B.JPane C.Canvas D.JTextArea

10、void 的含义:( C ) A.方法体为空 B.定义的方法没有形参 C.定义的方法没有返回值 D.方法的返回值不能参加算术运算

11、关于 Java中异常的叙述正确的是: ( D ) A.异常是程序编写过程中代码的语法错误 B.异常是程序编写过程中代码的逻辑错误 C.异常出现后程序的运行马上中止 D.异常是可以捕获和处理的

12、所有的异常类皆继承哪一个类?(C ) A.java.io.Exception B.java.lang.Throwable C.java.lang.Exception

D.java.lang.Error

13、下面哪个不是 java 语言中的关键字?(B )

A.long B.sizeof C.instanceof D.const

14、为实现进程之间的通信,需要使用下列那种流才合适?(D) A.Data stream

B.File stream C.Buffered stream D.Piped stream

15、在复选框中移动鼠标, 然后单击一选项, 要捕获所选项必需实现哪个接口?(D)

A.ActionListener B.MouseListener C.MouseMotionListern D.ItemListener

二、填空题(每空 1 分,共 20 分)

1、面向对象程序设计所具有的基本特征是:

_多态性

2、数组 x 定义如下

int x[ ][ ]=new int[3][2]

则 x..length 的 值为 3 ,

x[0].length 的 值为 2 。

抽象性 ,_封装性 ,_继承性 ,

3、Java中实现多线程一般使用两种方法, 一是 继承 Thread 类 ,二是 实现 Runnable 方法

4、Java的图形用户界面设计中,有很多布局管理器用来摆放组件的位置,一般用到

的 布 局 管理 器 有 ( 列 出 四 种 即 可 ) FlowLayout , GridLayout ,

BorderLayout ,CardLayout

5、Applet 常用的方法是: init()_、 run() 、 stop() 和 destroy()。三、阅读程序,写出程序的输出结果(每题5 分,共 20 分)

1、class A{

private int privateVar;

A(int _privateVar){

privateVar=_privateVar;

}

boolean isEqualTo(A anotherA){ if(this.privateVar == anotherA.privateVar) return true;

else

return false;

}

}

public class B{

public static void main(String args[]){ A a = new A(1);

A b = new A(2);

System.out.println(a.isEqualTo(b));

}

}

程序的输出结果为: false 2、class A {

double f(double x, double y) { return x * y;

}

}

class B extends A {

double f(double x, double y) { return x + y;

}

public class Test {

public static void main(String args[]) { B obj = new B();

System.out.println("The program output is " + obj.f(4, 6));

}

}

程序的输出结果为: The program output is 10_ 3、public class Unchecked {

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

method();

} catch (Exception e) { System.out.println("A");

} finally { System.out.println("B");

}

}

static void method() { try {

wrench();

System.out.println("C");

} catch (ArithmeticException e) { System.out.println("D");

} finally { System.out.println("E");

}

System.out.println("F");

static void wrench() {

throw new NullPointerException();

}

}

程序的输出结果为:

E A B

4、public class Test {

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

int a[] = { 0, 0, 0, 0, 0, 0 };

calculate(a, a[5]);

System.out.println("the value of a[0] is " + a[0]); System.out.println("the value is a[5] is " + a[5]);

}

static int calculate(int x[], int y) { for (int i = 1; i < x.length; i++)

if (y < x.length) x[i] = x[i - 1] + 1;

return x[0];

}

}

程序的输出结果为: the value of a[0] is 0 the value is a[5] is 5

1. 下面哪些是 short 型的取值围[C]

A. -27 –27-1

B. 0 –216-1

C. -215 –215-1

D. -231 –231-1

2. 下面哪些是合法的标识符[ABE]

A. $persons

B. TwoUsers

C. *point

D. this

E. _endline

3. 哪些是将一个十六进制值赋值给一个long 型变量 [D]

A. long number = 345L;

B. long number = 0345;

C. long number = 0345L;

D. long number = 0x345L;

4. 下面的哪些程序片断可能导致错误。[BD] A.

String s = "Gone with the wind"; String t = " good ";

String k = s + t;

B.

String s = "Gone with the wind"; String t;

t = s[3] + "one";

C.

String s = "Gone with the wind"; String standard = s.toUpperCase();

D.

String s = "home directory";

String t = s - "directory";

5. 在// point x 处的哪些声明是合法的[DE] class Person {

private int a;

public int change(int m){ return m; }

}

public class Teacher extends Person { public int b;

public static void main(String arg[]){ Person p = new Person(); Teacher t = new Teacher();

int i;

// point x

}

}

A. i = m;

B. i = b;

C. i = p.a;

D. i = p.change(30);

E. i = t.b;

6. 当 Frame 的大小被改变时 , Frame 中的按钮的位置也可能被改变, 请问此时使用的是什么布局管理器[B]

A. BorderLayout

B. FlowLayout

C. CardLayout

D. GridLayout

7. 给出下面的代码片断

1 public void create() {

2 Vector myVect;

3 myVect = new Vector(); 4 }

下面的哪些述是正确的 ? [ADE]

A. 第二行的声明不会为变量myVect 分配存空间。// 指的是堆空间 ,只是在栈中分配;这里不用较真 .自己理解就好 ;

B. 第二行的声明分配一个到Vector 对象的引用的存空间。

C. 第二行语句创建一个Vector 类对象。

D. 第三行语句创建一个 Vector 类对象。

E. 第三行语句为一个 Vector 类对象分配存空间。

// 分配栈空间 ,相当于指针 ,但是不分配 "到 Vector 对象的引用的空间 ";选项二的意思是分配了堆空间 ;

8. 下面的哪些答案可以用以表示八进制值8? [A]

A. 010

B. 0x10

C. 08

D. 0x8

9. 哪些不是 Java关键字 [AB]

A. TRUE

B. sizeof

C. const

D. super

E. void

10. 下面的哪些叙述为真。[AD]

A. equals()方法判定引用值是否指向同一对象。// 不说是谁的就是默认的

B. == 操作符判定两个分立的对象的容和类型是否一致。

C. equals()方法只有在两个对象的容一致时返回true。

D. 类 File 重写方法 equals()在两个分立的对象的容和类型一致时返回true。 // 当两个独立的对象的容和类型一致;

11. 下面关于继承的哪些叙述是正确的。[AD]

A. 在 java 中只允许单一继承。

B. 在 java 中一个类只能实现一个接口。

C. 在 java 中一个类不能同时继承一个类和实现一个接口。

D. java 的单一继承使代码更可靠。

12. 第十行的声明将调用哪些方法. [D] 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}

12 }

A. 第 2 行的方法

B. 第 3 行的方法

C. 第 6 行的方法

D. 第 7 行的方法

13. 下面哪些不是 java 的原始数据类型[BC]

A. short

B. Boolean

C. unit

D. float

14. 下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的访问是排他的?

[B]

A. transient

B. synchronized

C. serialize

D. static

15. main()方法的返回类型是什么?[B]

A. int

B. void

C. boolean

D. static

16. 给出以下关于一个使用适当的字符间距的字体的TextField 的表达式TextField t = new TextField("they are good",40);//40指的是像素

哪些叙述是对的?[D]

A. 被显示的字符串可以使用多种字体。

B. 一行中最大的字符数是40

C. 显示的宽度正好是 40 个字符宽。

D. 用户可以编辑字符。

17. 关于垃圾收集的哪些叙述是对的?[B]

A. 程序开发者必须自己创建一个线程进行存释放的工作。

B. 垃圾收集将检查并释放不再使用的存。

C. 垃圾收集允许程序开发者明确指定并立即释放该存。

D. 垃圾收集能够在期望的时间释放被java 对象使用的存。

18. 给出下面的代码

1 public class Test {

2 int m, n;

3 public Test() {}

4 public Test(int a) { m=a; }

5 public static void main(String arg[]) {

6

Test t1,t2;

7

int j,k;

8

j=0; k=0;

9

t1=new Test();

10

t2=new Test(j,k);

11

}

12 }

在编译时哪行将导致一个错误?

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值