《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,姓名=张三。





