Java期末考试题(附答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java程序设计期末考试题
一、选择题 20 分
1、下列说法中,不正确的是( A)
A) 一个java源程序编译通过后,得到的结果文件数也只有一个。

B) 一个java源程序经过编译后,得到的文件的扩展名一定是.class。

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

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

2、请问,以下哪些描述是正确的?
请选择所有正确答案:
(1)如果package语句存在,则必须出现在源文件的非空白首行。

(2)如果import语句存在,则必须出现在源文件的非空白首行。

(3)如果main()方法存在,则必须出现在源文件的非空白首行。

(4)如果在源文件中声明了一个public接口,则其名称必须和源文件名一致。

3、请问,以下哪些是Java中的合法标识符?
请选择所有正确答案:
(1)my-id
(2)my_id
(3)101ids
(4)id101
4、请问,以下哪些是合法的标识符?
请选择所有正确答案:
(1)%abcd
(2)$abcd
(3)1abcd
(4)package
(5)_a_long_name
5、以下哪个不是Java的关键字?()
A、FALSE
B、const
C、this
D、void
6、以下哪个不是Java的关键字?()
A、TRUE
B、goto
C、this
D、void
7、Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( )个比特位。

A、8
B、16
C、32
D、64
8、请问一下哪些修饰符用于声明一个常量?请选择一个正确答案:
(1) static
(2) final
(3) abstract
(4) public
9、给出以下代码,该程序的运行结果是什么?
public class Example{
final int x=0;
Example(){
x=1;
}
final int aMethod(){
return x;
}
}
请选择所有正确答案:
(1) 代码编译错误,因为非final类中存在final方法。

(2) 代码编译成功。

(3) 代码编译错误,因为代码中对一个final变量x有改变其值的操作。

(4) 代码编译错误,如果去掉变量x前的final修饰符,可使代码编译通过。

(5) 代码编译错误,因为final修饰符只能修饰方法不能修饰变量,因此语句final lint x=0错误.
10、给出以下代码,请问该程序的运行结果是什么?
1.public class Example{
2.private final int i=10;
3.private byte k=i;
4.private static void main(String args[]){
5.System.out.println(k);
6.}
7.}
请选择一个正确答案:
(1) 代码在第2行编译错误
(2) 代码在第3行编译时发出变量k不精确警告。

报错是是因为k和i没有声明static,而不是不精确警告。

(3) 代码编译成功。

(4)代码编译成功,但在运行期第5行抛出异常。

11、给出以下代码,该程序的运行结果是什么?
public class Example{
final int x=0;
Example(){
x=1;
}
final int aMethod(){
return x;
}
}
请选择所有正确答案:
1.代码编译错误,因为非final类中存在final方法。

2.代码编译成功。

3.代码编译错误,因为代码中对一个final变量x有改变其值的操作。

4.代码编译错误,如果去掉变量x前的final修饰符,可使代码编译通过。

12、给出以下代码,请问该程序的运行结果是什么?
class Example{
public static void main(String args[]){
int a=5;
System.out.println(cube(a));
}
int cube(int theNum){
return theNum*theNum*theNum;
}
}
请选择一个正确答案:
(1) 代码编译失败,因为方法cube()已经在ng.Math类上定义过。

(2) 代码编译失败,因为方法cube()不是static方法。

(3) 代码编译成功,但运行期抛出异常。

(4) 打印输出125。

13、有代码如下,请补全:
public class Example{
public enum Color{Red,Green,Blue};
public void foo(){
//在这里插入代码
System.out.println(c);
}
}
1.for(Color c:Color.values())
2.for(Color c=RED; c<BLUE;c++)
3.for(Color c:c.hasNext();c.next())
4.for(Color c: Color[0]; c< Color.BLUE;c++)
14、请问,以下哪些修饰符用于修饰变量,可使该变量属于类而不属于类实例?请选择一个正确答案:
(1) static
(2) final
(3) abstract
(4) transient
15、设有下面两个类的定义:
class Person {
long id; // 身份证号
String name; // 姓名
}
class Student extends Person {
int score; // 入学总分
int getScore(){
return score;
}
}
则类Person和类Student的关系是( )。

A、包含关系
B、继承关系
C、关联关系
D、上述类定义有语法错误
16、对于以下类:
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;
17、给出以下代码,请问插入以下哪些语句可以满足对插入语句的要求? public class T{
int r;
int s;
T(int x,int y){
r=x;
s=y;
}
}
class S extends T{
int t;
public S(int x,int y,int z){
//插入代码处:要求插入代码实现r=x,s=y
t=z;
}
}
请选择一个正确答案:
(1) T(x,y);
(2) this(x,y);
(3) super(x,y);
(4) super(x,y,z);
(5) 以上均不对。

18、请问以下哪些关于构造器的描述是正确的?
请选择所有正确答案:
(1) 子类可以继承父类的构造器。

(2) 如果没有提供任何构造器,编译器自动为类提供一个无参的默认构造器。

(3) 构造器的返回类型均为void。

(4) 构造器可以抛出异常。

--------------------------------------------------------------------- 19、请问,以下哪些是有关方法覆盖的正确描述?
请选择所有正确的答案:
1.覆盖的方法和被覆盖的方法具有相同方法名、参数列表和返回类型。

2.覆盖的方法的访问范围声明不能比被覆盖的方法的访问范围小。

3.覆盖的方法不能抛出被覆盖的方法不能抛出的异常。

4.被覆盖的方法不能被private修饰。

20、给出以下代码,请问该程序的运行结果是什么?
1.class Example{
2.public static void main(String args[]){
3.Object o=new String("abcd");
4.String s=o;
5.System.out.println(s);
6.System.out.println(o);
7.}
8.}
注意:第四行是错误的,必须将o强制转换成String类型
abcd
abcd
请选择一个正确答案:
(1) 打印输出abcd和abcd
(2) 代码编译失败,第3行发生错误。

(1) 代码编译失败,第4行发生错误。

(2) 代码编译失败,第6行发生错误。

三、判断题 25分
1.在Java中一个类不能同时继承一个类和实现一个接口。

F
2.Java中数组的元素可以是简单数据类型的量,也可以是某一类的对象。

T
3. 构造方法是类的一种特殊方法,它的方法名必须与类名相同。

T
4.在一个Java源程序文件中,可以有多个public类。

F
5. Java语言含有指针。

F
6. Java程序编译之后所生成文件的扩展名为“.java”。

F
7. 假设有一个Java源程序文件,它只定义了一个具有public属性的类Hello,那么编译该文件的命令是“javac Hello”。

F
8.构造方法一般不允许返回任何值,但也不允许标注void。

T
9. 抽象类可以实例化,但不能被继承;最终类不能实例化,可以被继承。

F
10. Java语言不含有指针与析构方法,所以Java程序只有在结束运行时,才能释放所占用的内存。

F
11. Java语言是不区分大小写的。

F
12. Java程序源文件的扩展名为“.jar”。

F
13.以//开始的是多行注释语句。

F
14. 在Java语言中,每个ASCII码英文字符占用8个二进制位,而每个中文汉字字符则占用16个二进制位。

F
15. 在Java中一个类只能实现一个接口。

F
16. 在同一个类中,允许存在具有相同方法名和相同参数列表的方法,只要这些方法的返回类型不相同。

F
17.对于数组int [][]t={{1,2,3},{4,5,6}};来说,t.length等于3,t[0].length等于3.F
18.抽象方法不能含有方法体,并且必须在抽象类中。

F
19.Math类中的方法round()的功能是返回与参数最近的整数即:四舍五入后取整。

T
20.已知int t=64000在语法上正确,则short s=640000呢?F
21.Java数组中可以放入任何类型的数据。

T
22.Java程序分成应用程序和小程序两类,一个Java程序有可能既是应用程序,又是小程序。

T
ng包是Java程序自动导入的,因此可以直接用其中的类和接口;位于类继承关系层次结构的根部的类Object就在此包中。

T
24.有时候为了避免引起混淆,构造方法名可以不与所属的类名同名。

F
25.以/*开始,*/结束的是单行注释。

F
四、填空题 15分
1.Java语言通过__垃圾回收__机制简化了程序的内存管理。

2.String类和StringBuffer类都被定义为_最终类___,不能有子类。

3.建立Java开发环境,一般需要设置环境变量:_path__和_classpath___.
4.在Java程序中,每一行_//___之后的内容是程序的注释,另外介于__/*__和_*/___之间的内容也是注释。

5.设有一个Java应用程序,其源程序文件名为J_Test.java,则编译该源程序的命令为___javac__,运行该应用程序的命令为__java___.
6.接口中定义的常量默认具有_public____static final的属性
接口中定义的方法默认具有public abstract的属性
7. 数组对象的长度在数组对象创建之后,就__不能___改变,数组元素的下标总是从__0__开始。

已知数组a的定义是int a[]={1,2,3,4,5};则a[2]=__3__。

已知数组b的定义是int b[]=new int [5];则b[2]=__0___; 已知数组c的定义是Object c[]=new Object[5];则c[2]=_null___。

8. 在Java语言中,字符串常量是用__双引号__括起来的字符序列,字符串不是字符数组,而是类__String___的实例对象。

9.Java语言中,有一个类是所有类或接口的父类,这个类的名称是_ Object ____。

10. 在一个合法的Java源程序文件中定义了3个类,则其中属性为public的类可能有___1___个。

11.编译一个定义了两个类和三个方法的Java源文件,总共会产生__2___个字节码文件,这些字节码文件的扩展名是____.class___.
12.Java标识符是由字母、__$__、____下划线_和___数字__组成,其中__数字___不能放在开头
13.Java字符采用的是ISO规定的_unicode ___字符。

14.面向对象程序设计语言支持两种形式的多态:____编译时多态___和_运行时多态____。

15.在Java语言中,ng包中定义了三种字符串类: String _、_StringBuilder _和__StringBuffer__。

六、编程题 40分
1. 请编写程序,实现对数组int a[]=new a[5];从键盘随意输入5个值,进行从小到大排序,并在控制台窗口输出排完序的结果。

import java.util.*;
public class Num1_Sort {
public static void main(String args[]) {
int []a=new int[5]; //定义一个大小为5的整型数组
int temp; //临时变量
Scanner s=new Scanner(System.in);
//输入5个整数
for(int i=0;i<a.length;i++) {
a[i]=s.nextInt();
}
//冒泡排序
for(int i=0;i<a.length;i++) {
f or(int j=1;j<a.length-1-i;j++) {
if(a[j]>a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//输出打印
for(int i=0;i<a.length;i++) {
S ystem.out.print(a[i]+ " ");
}
}
}
2.用二维数组存放、打印杨辉三角型
class Demo {
public static void main(String args[]) {
int i, j;
int Level = 7;
int[][] iaYong = new int[Level][];
System.out.println("杨辉三角形");
for (i = 0; i < iaYong.length; i++) {
iaYong[i] = new int[i + 1]; //定义二维数组的第i行有i+1列}
iaYong[0][0] = 1;
for (i = 0; i < iaYong.length; i++) {
iaYong[i][0] = 1;
for (j = 1; j < iaYong[i].length - 1; j++)
iaYong[i][j] = iaYong[i - 1][j - 1] + iaYong[i - 1][j];
iaYong[i][iaYong[i].length - 1] = 1;
}
for (int[] row : iaYong) {
for (int col : row)
System.out.print(col + " ");
System.out.println();
}
}
}。

相关文档
最新文档