《JAVA语言程序设计》期末考试试题及答案2
《JAVA语言程序设计》期末考试试题及答案2
一.判断题
1. 在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。
答案:√
解释:
- 在多个
catch
语句中,异常类型的子类应放在父类前面。如果父类放在前面,将导致子类异常永远不会被捕获,因为父类类型已经捕获了所有该类及其子类的异常。
2. 子类只能继承父类的public,protected和同一个包中的package级的成员。
答案:√
解释:
- 子类可以继承父类的
public
和protected
成员,以及父类在同一个包中的默认访问级别成员,但不能继承父类的private
成员。
3. 在类中实现一个接口,则一定要实现接口中的所有方法。
答案:×
解释:
- 如果一个类实现了接口,但没有实现接口中的所有方法,那么该类必须被声明为
abstract
类。否则,编译器会报错。也就是说,抽象类可以选择不实现接口中的所有方法。
4. 抽象方法不仅有方法头,还应该有方法体。
答案:×
解释:
- 抽象方法只有方法头,没有方法体。方法体在继承该方法的子类中提供。
5. 在比较str1和str2两个字符串对象值是否相等时使用语句str1==str2。
答案:√
解释:
- 使用
==
比较的是两个对象的引用地址,而不是内容。在比较字符串内容时,应该使用str1.equals(str2)
,因为equals()
方法比较的是字符串的内容。
6. Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。
答案:√
解释:
- 每个类都会生成一个对应的字节码文件。即使源代码中定义了多个类,编译后也会为每个类生成相应的
.class
文件。
7. Java程序里, 创建新的类对象用关键字new,回收无用的类对象使用关键字free。
答案:×
解释:
- 在Java中,类对象的回收是由垃圾回收机制(GC)自动完成的,不需要使用
free
关键字。free
是C语言中的函数,Java使用垃圾回收器来回收不再使用的对象。
8. 构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。
答案:×
解释:
- 构造函数的名字必须与类名相同,但构造函数没有返回类型,包括
void
。它的作用是初始化新创建的对象。
9. 如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。
答案:√
解释:
- 在Java源代码中,
import
语句必须出现在类声明之前,可以在类定义之前有空行和注释,但import
语句应该排在它们之后。
10. 拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。
答案:√
解释:
- 一个类如果含有
abstract
方法,则该类必须是抽象类。但是,抽象类也可以没有任何abstract
方法,它仅仅表示该类不能直接实例化。
11. 静态初始化器是在其所属的类加载内存时由系统自动调用执行。
答案:√
解释:
- 静态初始化器(
static
块)在类第一次加载时由JVM自动执行,通常用于初始化类的静态成员。
12. 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。
答案:×
解释:
- 在Java中,赋值一个对象变量给另一个对象变量时,实际上是复制了引用,而不是创建一个新对象。两个变量将指向同一个对象。
13. Java applet也能够存取客户机磁盘上的文件。
答案:√
解释:
- Java Applet本身是有一定限制的,但是可以通过设置特定的安全权限来允许Applet访问客户机的文件系统。但这种操作通常受限于浏览器的安全策略。
14. 进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。
答案:√
解释:
- 进程是程序在计算机中执行的实例。一个进程可以包含多个线程,多个线程并行执行,构成多线程的并发执行环境。
选择题
1. Java application中的主类需包含main方法,以下哪项是main方法的正确形参?
A. String args
B. String args[]
C. Char arg
D. StringBuffer args[]
答案:B
解释:
- 在Java应用程序中,
main
方法的标准形式是:public static void main(String[] args)
。所以正确的形参应该是String[] args
,表示接受一个字符串数组作为命令行参数。
2. 以下关于继承的叙述正确的是:
A. 在Java中类只允许单一继承
B. 在Java中一个类只能实现一个接口
C. 在Java中一个类不能同时继承一个类和实现一个接口
D. 在Java中接口只允许单一继承
答案:A
解释:
- 在Java中,类只允许单一继承,即一个类只能继承一个父类。但是,Java允许一个类实现多个接口,支持多重接口继承。选项B、C、D都不准确。
3. paint()方法使用哪种类型的参数?
A. Graphics
B. Graphics2D
C. String
D. Color
答案:A
解释:
paint()
方法的参数类型是Graphics
,这是用于绘制图形的类。Graphics2D
是Graphics
的子类,它提供了更强大的绘图功能,但paint()
方法的参数类型仍然是Graphics
。
4. 以下哪个不是Java的原始数据类型?
A. int
B. Boolean
C. float
D. char
答案:B
解释:
- Java的原始数据类型包括
int
、float
、char
等。Boolean
是一个包装类,而非原始数据类型。Boolean
用于表示逻辑值(true/false),它是类而不是原始数据类型。
5. 若需要定义一个类域或类方法,应使用哪种修饰符?
A. static
B. package
C. private
D. public
答案:A
解释:
- 如果需要定义一个类域(静态变量)或类方法,应该使用
static
修饰符。static
表示该字段或方法属于类,而不是某个特定的对象实例。package
、private
和public
修饰符用于访问控制,而不专门用于表示类域或类方法。
6. 在浏览器中执行 Applet 程序,以下选项中的哪个方法将被最先执行?
选项:
- A.
init()
- B.
start()
- C.
destroy()
- D.
stop()
答案: A. init()
解释: 在浏览器中执行 Java Applet
程序时,init()
方法是最先执行的。它用于初始化
applet,并且只在 applet 加载时执行一次。
7. 有以下程序片段,下列哪个选项不能插入到行 1?
程序片段:
1 | 1. |
选项:
- A.
import java.awt.*;
- B.
package mypackage;
- C.
class OtherClass{ }
- D.
public class MyClass{ }
答案: D. public class MyClass{ }
解释: 在 Java 中,一个文件中只能有一个
public class
,而且它的名称必须与文件名相同。因此,插入
public class MyClass{ }
会导致类名冲突,不能插入。
8. 设有下面两个赋值语句:
1 | a = Integer.parseInt("12"); |
下述说法正确的是?
选项:
- A.
a
是整数类型变量,b
是整数类对象。 - B.
a
是整数类对象,b
是整数类型变量。 - C.
a
和b
都是整数类对象并且值相等。 - D.
a
和b
都是整数类型变量并且值相等。
答案: D. a
和 b
都是整数类型变量并且值相等。
解释: Integer.parseInt()
返回的是基本数据类型 int
,而 Integer.valueOf()
返回的是 Integer
对象,调用 .intValue()
后将其转换为基本数据类型 int
。因此,a
和
b
都是 int
类型变量且值相等。
9. FilterOutputStream
是
BufferedOutputStream
、DataOutputStream
及
PrintStream
的父类,以下哪个类可能是
FilterOutputStream
构造函数的参数类型?
选项:
- A.
OutputStream
- B.
File
- C.
InputStream
- D.
BufferedOutputStream
答案: A. OutputStream
解释: FilterOutputStream
构造函数接受一个 OutputStream
类型的参数,OutputStream
是所有输出流的父类。因此,选项 A
正确。File
和 InputStream
不符合要求,而
BufferedOutputStream
是 FilterOutputStream
的一个子类。
10. 在编写 Java Applet 程序时,需在程序的开头写上哪条语句?
选项:
- A.
import java.awt.*;
- B.
import java.applet.Applet;
- C.
import java.io.*;
- D.
import java.awt.Graphics;
答案: B.
import java.applet.Applet;
解释: 在编写 Java Applet 程序时,必须导入
java.applet.Applet
类,以便创建 applet。因此,选项 B
正确。
11. 在使用 interface
声明一个接口时,只可以使用哪个修饰符修饰该接口?
选项:
- A.
private
- B.
protected
- C.
private protected
- D.
public
答案: D. public
解释: 在 Java 中,接口只能使用 public
修饰符来声明,其他修饰符(如
private
、protected
、private protected
)是不允许的。接口默认是公共的,必须用
public
关键字来声明。
12. Java 源文件和编译后的文件扩展名分别为?
选项:
- A.
.class
和.java
- B.
.java
和.class
- C.
.class
和.class
- D.
.java
和.java
答案: B. .java
和
.class
解释: Java 源代码的文件扩展名为
.java
,编译后的字节码文件扩展名为 .class
。
13. 下列说法中,不正确的一项是?
选项:
- A. Java 程序只有两类:Application 和 Applet
- B. 类的方法只能由
public
修饰 - C. 面向对象的程序设计的优点有可重用性、可扩展性、可管理性
- D. Java 语言通过接口支持多重继承
答案: B. 类的方法只能由 public
修饰
解释: 方法不仅可以由 public
修饰,还可以使用 private
、protected
或默认访问修饰符。因此,选项 B 不正确。
14. main()
方法是 Java Application
程序执行的入口点,关于 main()
方法的方法头,下面哪一项是合法的?
选项:
- A.
public static void main()
- B.
public static void main(String args[])
- C.
public static int main(String[] args)
- D.
public void main(String args[])
答案: B.
public static void main(String args[])
解释: Java 的 main()
方法必须是
public
、static
、void
,并且接受一个
String[]
类型的参数。选项 B 正确。选项 A 缺少参数,选项 C
返回类型不对,选项 D 缺少 static
修饰符。
15. 在类中若要处理 ItemEvent
事件,则该类需要实现的接口是?
选项:
- A.
ItemListener
- B.
ActionListener
- C.
itemStateChanged
- D.
Event
答案: A. ItemListener
解释: ItemEvent
是用来处理与项(如复选框、单选按钮)状态改变相关的事件。要处理该事件,必须实现
ItemListener
接口,并重写其 itemStateChanged()
方法。
16. 将 GUI 窗口中的组件按照从左到右排列的布局管理器是?
选项:
- A.
FlowLayout
- B.
BorderLayout
- C.
GridLayout
- D.
CardLayout
答案: A. FlowLayout
解释: FlowLayout
是一个将组件从左到右排列的布局管理器,当容器宽度不足时,自动换行。其他布局管理器的布局方式不同,BorderLayout
用于将组件放入五个区域,GridLayout
按网格排列组件,CardLayout
用于实现卡片式布局。
程序题
1. 以下程序的输出结果为 "相等"。
1 | class StringTest1 { |
答案: 相等
解释: 在 Java 中,equals()
方法用于比较两个字符串的内容是否相等,而 ==
比较的是引用地址。即使 s2
是通过 new
创建的对象,它的内容与 s1
是相同的,所以
s1.equals(s2)
返回 true
,输出 "相等"。
2. 以下程序段的输出结果为 "5 6 7 8 9"。
1 | public class TestArray { |
答案: 5 6 7 8 9
解释: 该程序实现的是选择排序(Selection
Sort),它会将数组中的元素按从小到大的顺序进行排序。排序后的数组是
[5, 6, 7, 8, 9]
,然后通过 for
循环打印每个元素,输出结果为:5 6 7 8 9
。
3. 写出以下程序的功能。
1 | import java.io.*; |
功能: 从键盘逐一输入字符串,逐一输出至
input.txt
文件中,直至输入空行。
解释:
该程序从控制台读取输入的字符串并将其写入到文件 input.txt
中。每次输入一个字符串,程序会将该字符串写入文件并换行。当输入空字符串时(即直接按回车),循环结束,程序关闭文件。
阅读以下程序,写出输出结果。
1 | class Animal { |
答案: Animal Dog
解释:
- 程序中定义了两个类:
Animal
和Dog
。Dog
类继承自Animal
类。 Animal
类的构造函数在创建Animal
类的对象时被调用,输出"Animal "
。Dog
类的构造函数在创建Dog
类的对象时被调用,输出"Dog "
。- 在
main()
方法中,new Dog()
会先调用Animal
类的构造函数,然后再调用Dog
类的构造函数。 - 因此,输出顺序为先输出
"Animal "
,然后输出"Dog "
。
最终输出结果是:Animal Dog
。