java无忧网
标题: 期末作业练习题 [打印本页]
作者: java无忧网 时间: 2018-6-18 11:06
标题: 期末作业练习题
一、选择题(本大题共10小题,每小题 1分, 共10分)
1. 面向对象程序设计的三大基本特征是( C )
A. 共享、安全、多态
B. 重用、安全、多态
C. 封装、继承、多态
D. 安全、封装、健壮
2. 关于Java程序设计语言,不正确的说法是( C )
A. 是一种面向对象的程序
B. 是一种跨平台的程序设计语言
C. 是一种面向方面的程序设计语言
D. 是一种健壮的程序设计语言
3. 关于Java程序中的对象,不正确的说法是( A )
A. 对象指内存中为它分配的存储其状态的空间
B. 由构造函数创建对象
C. 一个对象中可以包含其它对象
D. 对象的所有方法都可以在类的外部访问
4. 关于类,不正确的是( B )
A. 类的所有的方法只能通过类的实例访问
B. 类是Java语言中用于封装的程序单元
C. Object是Java语句中所有类的父类
D. 一个Java类可以实现多个接口
5. Java中的数组,正确的说法是( B )
A. 一个数组中可以包含不同类型的数据
B. 数组可以静态初始化也可以动态初始化
C. 二维数组中,每个成员的大小必须相同
D. 数组的下标总是从1开始
6. 关于类的静态方法,不正确的是( C )
A. 静态变量是全局变量
B. 所有Java程序中的main() 方法都是静态方法
C. 静态成员不能通过对象访问
D. 静态方法是指独立于对象的类方法
7. 关于方法的重载与覆盖,正确的是( A )
A. 在一个类中,对一个方法只能重载一次
B. 如果在子类中覆盖了父类的一个方法,就不能重载它
C. 不像其它成员函数一样,构造函数不可以重载
D. Java语言中的多态性主要是通过方法的重载来实现的
8. Java中的异常,不正确的是( D )
A. 异常是程序运行时的非正常情况
B. Java程序的健壮性得益于Java系统的异常处理机制
C. 在Java语言中,异常作为一种对象来处理
D. 所有异常都得捕获
9. 关于线程不正确的是( A )
A. 线程是一个运行程序中的一个执行分支
B. 一个Java进程的多个线程有各自的代码区和数据区
C. Java语言对多线程编程提供了良好的支持
D. Java的线程机制提供了一种并行执行手段
10. 关于图形容器不正确的是 ( C )
A. 所有的容器中都可以加入基本组件
B. 图形界面中的组件通过容器来组织
C. 中间容器用来分组管理界面中的基本组件
D. 每个图形界面最多只有一个顶层容器
二、填空题(本大题共15小题,每小题 2分,共30分)
1. Java程序编译成____文件,然后在___________上___________执行。
2. Java语言的编译器为____________,执行器为________________。
3. Java 程序中类成员的访问控制修饰符有_________、________与________。
4. Java中的一个字节数据、字符数据和整型数据在机器中分别占________位、________位与________位。
5. 从成分类型来看,类中的成员包括___________、___________两大类。
6. Applet程序是嵌入在__________中的小程序,而且是在 ____________端解释执行的。
7. 在Java语言中,图形用户界面GUI组件可分为_______组件和________组件。
8. Java语言系统内置的3个可以直接使用的流对象分别是___________、____________、____________。
9. Java程序中的所有线程类都必须实现接口____Runnable___-------____-------_,其中的方法___run()_______-------__决定了线程的执行行为。
10. Java程序中声明包的关键字由_______,引入包的关键字是________。
11. 程序填空题
(1) 以下程序需要引入java.util包中所有的类,请在下划线上填入相应的关键字或符号
__import___java.util.*; _____
class Demo {
int x;
public void f() {....}
}
(2) 补充Employee类的构造方法和get方法
public class Employee {
Stringname, sex;
intage;
Stringdepartment;
public Employee (String n, String s, int a,String d) {
__name____=___n___;
__sex____=___s___;
_age_____=___a___;
___ department ___=___d___;
}
public String getName( ) { __return name__________ ; }
public String getSex( ) { _____return sex_______ ; }
public int getAge( ) { _____return age_______ ; }
public void setAge(int a) {______age=a______; }
public void setDepartment (String d) { ___ department =d_________; }
}
(3) 对于以下Applet程序和相应的HTML文档,补充缺少的部分
public class DemoApplet extends __ Applet _____ {
public void paint(____Graphics ___ g) {
g.drawString("AppletDemo",30,30);
}
}
<HTML>
<APPLET CODE=“__ DemoApplet.class_____” WIDTH=“200”HEIGHT=“100”>
</ APPLET>
</HTML>
(4) public class Demo {
publicstatic void main(String[] args) {
Strings="3000";
longl=new Long(s). __ longValue_______ ( );
inti=Integer. _____ valueOf____ (s);
}
}
(5) public class JFP{
publicstatic void main(String[] args){
JFramejf=new JFrame("GUI DEMO");
JPanelt=new JPanel();
JLabell1=new JLabel("Label 1");
JLabell2=new JLabel(" Label 2");
t.add(l2);
Containerc=jf.___ getContentPane______();
c.add(t,"North");
c.add(l1,"Center");
jf.setSize(100,200);
jf.set___ Visible____(true);
}
}
三、简答题与程序分析(本大题共5小题,每小题 5分, 共25分)
1. Java语言的特点有哪些?
答:1、java是目前使用最为广泛的网络编程语言之一
它不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此java语言具有功能强大和简单易用两个特征。java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
2、java有许多特性
java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
3、java拥有极高的跨平台能力
java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等与传统的编程语言,如C、C++相比,java能够更加容易上手,而比之微软平台的开发语言,如VB、MFC等,则有着跨平台运行的能力,尽管java没有能够完全实现最初的一次编程、随处运行的口号,但是java相比於其它较早的编程语言,仍然拥有极高的跨平台能力。
4、java是一个强类型语言
java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。可靠性方面最重要的增强之一是java的存储模型。
5、不支持指针消除重写存储和讹误数据的可能性
java不支持指针,它消除重写存储和讹误数据的可能性。类似地,java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。
6、java的异常处理使得系统更稳定
异常处理是java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
2. 解释线程的生命周期。
答:线程的生命周期是指线程创建到运行完毕的整个过程。在一个线程的生命周期中,有五个状态分别是:新建、就绪、运行、阻塞和消亡。
3. 图形界面中界面对象的布局有哪几种?
答:FlowLayout 流式布局
BorderLayout 边框式布局
GridLayout 网格布局
CardLayout 卡片布局
GridBagLayout 复杂的网格布局
4. 解释下列成熟型的作用并写出其执行结果:
public class tt {
publicstatic void main(String[] args) {
for(int i=1;i<=10;i++)
{
for(int j=2; j<=i; j++)
for(int k=j; k<=i; k++)
if(i= = j*k) System.out.print(i+"");
}
System.out.println();
}
}
答:三层循环判断最外层i是否与内层循环j、k的乘积是否相等,如果相等,输出当前i的值,不相等则跳过,输入结果如下所示:
4 6 8 9 10
5. 分析以下程序在执行过程中分析输入字符A和数字3的执行结果,并解释其原因。
public class Demo {
public static void main(String[] args) {
int i=0;
String[]choise={"A","B","C"};
Scanner cin =new Scanner(System.in);
try {
System.out.println("----Flag 1----");
System.out.println("请输入你的选项(1,2,3)");
i=cin.nextInt();
System.out.println(choise[i-1]);
System.out.println("----Flag 2----");
}
catch(InputMismatchExceptione) {
System.out.println("----Flag 3 ----");
System.out.println("输入数据格式错,要求是整型!");
System.out.println("----Flag 4 ----");
}
catch(ArrayIndexOutOfBoundsExceptione) {
System.out.println("----Flag 3----");
System.out.println("数组越界!");
System.out.println("----Flag 4----");
}
finally {
System.out.println("----Flag 5----");
System.out.println("执行完毕!");
}
System.out.println("----Flag 6----");
}
}
答:
输入A效果:
----Flag 1 ----
请输入你的选项(1,2,3)
A
----Flag 3 ----
输入数据格式错,要求是整型!
----Flag 4 ----
----Flag 5 ----
执行完毕!
----Flag6 ----
输入3效果:
----Flag 1 ----
请输入你的选项(1,2,3)
3
C
----Flag 2 ----
----Flag 5 ----
执行完毕!
----Flag 6 ----
解释:
上述代码i = cin.nextInt(); 表示接收int类型数据,当输入“A”字符串时,系统会抛出InputMismatchException异常,使用try catch进行捕获异常,程序正常运行,执行finally和后面的程序代码,就输出上述结果。输入数字”3”,程序正常运行。
四、编程题 (每小题7分,计35分)
3. 首先定义一个接口Shape,包含抽象方法double Area()。然后通过实现接口Shape定义类Circle,包括属性圆心坐标x、y和半径r,成员方法包括构造方法、属性的get方法和set方法,计算圆面积的方法Area()。最后在主类的main()函数定义Circle类的对象,并显示对象的所有属性包括面积。
答案:
public interface Shape {
public double Area();
}
public classCircle implementsShape {
int x,y,r;
public Circle(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
public double Area() {
return x*y*r*r;
}
public static void main(String[] args) {
Shape s=new Circle(5, 5, 5);
System.out.println("圆面积:"+s.Area());
}
}
5. 定义两个线程类ThreadA和ThreadB,执行线程时分别显示“I‘m A”和“I‘m B”, 然后在main()函数中创建两个线程的对象,并分别启动两个线程。
public class Threads {
public static void main(String[] args) {
Thread one=new Thread(){
public void run() {
System.out.println("one对象--线程名称:"+Thread.currentThread().getName());
}
};
Thread two=new Thread(){
@Override
public void run() {
System.out.println("two对象--线程名称:"+Thread.currentThread().getName());
}
};
one.start();
two.start();
}
}
| 欢迎光临 java无忧网 (http://www.javawyw.com/) |
Powered by Discuz! X3.2 |