一、选择题(本大题共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(); } }
|