《JAVA语言程序设计》期末考试试题及答案1
《JAVA语言程序设计》期末考试试题及答案1
选择题
1. 编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。
A. java
B. .class
C. html
D. .exe
答案:B
解释:
Java源文件扩展名为.java
,经过Java编译器编译后生成的字节码文件扩展名是.class
。这些.class
文件包含Java虚拟机(JVM)可执行的字节码。
2. 设 x = 1, y
= 2, z = 3,则表达式 y += z-- / ++x
的值是( A
)。
A. 3
B. 3.5
C. 4
D. 5
答案:A
解释:
- 初始值:
x = 1, y = 2, z = 3
。
z--
会先返回z
的当前值(3),然后z
减1,变为2。
++x
会先将x
加1,变为2,再返回加后的值(2)。
z-- / ++x
会进行整型除法:3 / 2 = 1
。
y += 1
,y
原来是2,加1后变为3。
最终y
的值是3。
3. 不允许作为类及类成员的访问控制符的是( C )。
A. public
B. private
C. static
D. protected
答案:C
解释:
public
、private
和protected
是Java中的访问控制符,用于定义类成员的可见性。
static
是一个修饰符,而不是访问控制符,它用于定义类的静态成员。因此不能作为类及类成员的访问控制符。
4.
为AB类的一个无形式参数无返回值的方法method
书写方法头,使得使用类名AB
作为前缀就可以调用它,该方法头的形式为(
A )。
A. static void method()
B. public void method()
C. final void method()
D. abstract void method()
答案:A
解释:
- 要通过类名直接调用方法,必须将方法声明为
static
,使其成为类方法。
static void method()
表示无参数、无返回值的静态方法。
- 其他选项没有
static
,无法直接通过类名调用。
5. 给定以下Java代码,编译运行后输出结果是( C ):
1 | public class Test { |
A. 0
B. 1
C. 2
D. 3
答案:C
解释:
static int i
默认值为0。
- 第一次调用
aMethod()
后,i
从0变为1。
- 第二次调用
aMethod()
后,i
从1变为2。
- 输出
i
的值,即2。
6. 如下哪个是合法的Java中的标识符( A )。
A. fieldname
B. super
C. 3number
D. #number
答案:A
解释:
fieldname
是一个合法的标识符,它符合命名规则:字母、数字、下划线或美元符号可以组成标识符,但不能以数字开头。
super
是Java的关键字,不能用作标识符。
3number
以数字开头,不符合标识符命名规则。
#number
包含非法字符#
,不能用作标识符。
7. 下面的代码段执行之后count的值是什么( D )。
1 | int count = 1; |
A. 5
B. 1
C. 15
D. 16
答案:D
解释:
- 初始值:
count = 1
。
- 循环中,每次将
i
加到count
上:- 当
i = 1
时,count += 1
,count = 2
。
- 当
i = 2
时,count += 2
,count = 4
。
- 当
i = 3
时,count += 3
,count = 7
。
- 当
i = 4
时,count += 4
,count = 11
。
- 当
i = 5
时,count += 5
,count = 16
。
- 当
- 最后输出
count
的值为16。
8. 下列哪一个import命令可以使我们在程序中创建输入/输出流对象( C )。
A. import java.sql.;
B. import java.util.;
C. import java.io.;
D. import java.net.;
答案:C
解释:
import java.io.*;
用于导入输入/输出流类,包括FileInputStream
、FileOutputStream
、BufferedReader
、PrintWriter
等类。
java.sql
用于数据库操作,java.util
包含常用工具类,java.net
用于网络编程。
因此,正确答案是java.io
。
9. 下列程序段执行后的结果是(A )。
1 | String s = new String("abcdefg"); |
A. aceg
B. ACEG
C. abcdefg
D. abcd
答案:A
解释:
- 字符串
s = "abcdefg"
,s.length()
是7。 - 循环的步长为2,所以
i
的值将分别是0, 2, 4, 6。 s.charAt(i)
在这些位置上分别输出字符a
,c
,e
,g
,因此输出是aceg
。
10. Java“一次编译,随处运行”的特点在于其( A )。
A. 跨平台性
B. 面向对象型
C. 多线程性
D. 安全性
答案:A
解释:
- Java的“一次编译,随处运行”指的是通过编译生成字节码(
.class
文件),这些字节码可以在任何支持Java虚拟机(JVM)的操作系统上运行。
- 这就是Java的跨平台性,确保Java程序可以在不同平台上无缝运行。
填空题
1. 开发与运行Java程序需要经过的三个主要步骤为
答案: 编辑源程序、编译生成字节码、解释运行字节码
解释:
开发Java程序的主要步骤是:
- 编辑源程序:编写Java代码文件。
- 编译生成字节码:使用
javac
编译器将Java源代码编译成字节码文件(.class
文件)。
- 解释运行字节码:使用Java虚拟机(JVM)解释并运行生成的字节码文件。
2. 在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。
解释:
Java中的char
类型使用Unicode编码表示字符,且每个char
类型的值都占用2个字节的内存空间。无论是英文字符还是中文字符,都占用相同的2个字节。
3. 设 x = 2 ,则表达式 ( x + + )/3 的值是 0 。
解释:
x++
是后缀自增运算符,会先使用x
的当前值,再执行x
的自增操作。
- 初始时,
x = 2
,执行x++
时,x
的值仍为2,x
会在之后自增到3。
- 表达式变为
2 / 3
,由于是整型除法,结果是0。
因此,表达式的值为0
。
4. 若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。
解释:
x < y
,即5 < 10
,结果为true
。
x >= y
,即5 >= 10
,结果为false
。
因此,逻辑值分别为true
和false
。
5. 抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final) 方法是不能被当前类的子类重新定义的方法。
解释:
- 抽象方法:没有方法体的定义,仅有方法签名,必须在抽象类中声明,并且子类必须实现这个方法。
- 最终方法:使用
final
修饰的方法不能在子类中被重写。
6.
创建一个名为 MyPackage 的包的语句是 package MyPackage;
,该语句应该放在程序的位置为:
答案: 应该在程序第一句
解释:
package
语句用于定义Java类所在的包,必须放在程序的第一行(在任何import语句之前)。它用于指定类所属的包名。
7.
设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70};
则执行以下几个语句后的输出结果是 120。
1 | int s = 0; |
答案: 120
解释:
MyIntArray
数组为:{10, 20, 30, 40, 50, 60, 70}
。
- 循环中,当
i
为奇数时,i % 2 == 1
条件成立。i = 1
时,MyIntArray[1] = 20
,加到s
中,s = 20
。
i = 3
时,MyIntArray[3] = 40
,加到s
中,s = 60
。
i = 5
时,MyIntArray[5] = 60
,加到s
中,s = 120
。
因此,输出结果是120
。
8. 在Java程序中,通过类的定义只能实现
答案: 单重继承,但通过接口的定义可以实现多重继承关系。
解释:
- 类的继承:Java中不支持类的多重继承,即一个子类不能继承多个父类。但是通过接口可以实现多重继承,类可以实现多个接口。
- 接口的继承:一个类可以实现多个接口,从而能够从多个来源继承方法,允许实现多重继承的关系。
9. 面向对象的软件开发方法用类把(数据)和基于数据的(操作)封装在一起。
答案: 数据、操作
解释:
面向对象的核心概念之一是封装。通过类,可以将数据(属性)和操作(方法)封装在一起,创建一个自包含的单位。这使得数据的访问受到控制,并且能够根据需求对数据进行操作。
10. 在Java语言中,用来分配内存的运算符是
答案: new
解释:
new
运算符用于在Java中分配内存,创建对象或数组实例。使用new
时,它会在堆内存中为对象分配空间,并返回该对象的引用。
11. 接口中的方法只能是_____抽象方法________。
答案: 抽象方法
解释:
在Java接口中,方法默认是抽象的,即只有方法的声明,没有方法的实现。接口中的方法只能声明为抽象方法,不能有方法体(在Java
8及以后,接口可以有默认方法和静态方法,但普通方法仍然是抽象的)。
12. javax.swing包中的 JMenu 类是负责创建菜单的,它的一个实例就是一个菜单。
解释:
JMenu
是javax.swing
包中的一个类,负责在Swing应用程序中创建菜单。它是一个菜单项容器,允许用户通过菜单与应用程序交互。通过创建JMenu
的实例,可以定义应用程序中的菜单内容。
写出下面程序的运行结果
1. 程序分析
代码:
1 | import java.io.*; |
运行结果:
Hello! I love JAVA.
解释:
- 在
AB
类的构造函数中,s1
被赋值为"Hello!"
,s2
被赋值为"I love JAVA."
。 toString()
方法将返回"Hello! I love JAVA."
,并打印出来。
2. 程序分析
代码:
1 | import java.io.*; |
运行结果:
s = 180
解释:
- 数组
a
中包含9个整数。程序遍历数组,判断能被3整除的数(10, 20, 30, 40, 50, 60, 70, 80, 90)。 - 满足条件的数有
30, 60, 90
,它们的和是30 + 60 + 90 = 180
,所以输出结果是s = 180
。
3. 程序分析
代码:
1 | class Parent { |
运行结果:
1 | south |
解释:
Parent
类的print()
方法只输出one
的值。Child
类重写了print()
方法,输出one + " to " + two
。- 在
main()
方法中,创建了Parent
类和Child
类的实例,分别调用了print()
方法。 - 第一次调用
p.print()
输出"south"
,第二次调用t.print()
输出"east to west"
。
编程题
1. Java GUI应用程序:矩形周长和面积
代码:
1 | import javax.swing.JOptionPane; |
解释:
- 该程序使用
JOptionPane
从用户输入长和宽,计算矩形的周长和面积。 - 输入长和宽后,周长是
(length + width) * 2
,面积是length * width
。 - 最后,使用
JOptionPane.showMessageDialog
显示结果。
2. Java程序输出班级和姓名
代码:
1 | public class HelloJava { //类定义正确3分 |
解释:
- 该程序通过
System.out.println
输出了一个班级和姓名的字符串。 - 运行后,控制台会输出
学号=2013001,姓名=张三
。