1、北邮Java技术期末复习题(含答案)填空题1.Java不仅仅是一种编程环境,它实际上是一个完整 的计算平台,包括完整的程序开发环境和运行环 境。2.完整的Java体系结构包括四个组件,分别是Java 编程语言、Java类文件格式、Java应用程序编程接 口和Java虚拟机。3.Java运行时环境是由Java虚拟机和核心类组合形 成的。4.在Java类文件中存储的二进制代码称为字节码,它 们是JVM的指令。5.当Java虚拟机是在主机操作系统上由软件实现时,它实际上是用本地(如C/C+等)语言编写的程序。6.Java虚拟机主要包括两个模块,一个是类装载器,另一个是执行引擎。7.在面向对象系统中,
2、对象是程序的基本组成实体。8.对象是程序的基本组成实体,类是创建对象的模 板。9.Java源程序中的类可以分为两种,分别是系统类和 用户自己定义类。10.编译程序的时候会自动导入到程序中的系统包是11.把基本数据类型包装成类包装成类的好处是可以 提供基本数据类型的信息,还可以使用类的方法对 数据进行操作。12.在Java中,int类型的包装类是Integer,char类型 的包装类是Charactero13.Integer类的parse1nt()方法的功能是把一个字符 串转换为一个整型数据。14.Java把数据输出到控制台是使用System,out完成 的。15.Scanner类是在java,
3、util包中定义的。16.创建一个连接到标准输入流对象System,in的 Scanner 对象的语句是 Scanner myScanner=new Scanner(System,in);o17.设myS是一个Scanner类的实例,则语句“int x二 myS.nextlntO;”的作用是读取一个整数,然后把这 个整数赋给变量X。18.Java提供的专门用于格式化输出数据的方法是 System,out.printf()。19.Java提供的用于处理日期和时间信息的系统类是 java.util.Dateo20.字符串常量是用双引号括起来的字符序列。21.Java用于处理处理字符串的类有两个,分
4、别是String 类和 StringBuffer 类。22.Java的编译器会为每个字符串常量生成一个String 类的实例。23.取得字符串的长度的方法是调用字符串对象的 length()方法。24.设有如下类定义1.class Person(2.private String name;3.Person(String n)a)name=n;4.)5.)ii.则创建一个Person类对象的语句是Person p=new Person(Apple);。25.在Java中,每当创建一个对象时,系统都会从它管 理的内存中分配一定的空间给这个对象。我们把创建好的对象叫 做对象实体,而这个对象实体的“标
5、识”叫做对象的引用。26.构造方法有两个作用,一个作用是提供要实例化的 类的类名,另一个作用是把新创建的对象初始化。27.new运算符用于创建对象,new运算符被执行之后 会返回新创建对象的引用。28.在声明成员变量的时候,用关键字static修饰的变量是类变量,类变量也称为静态变量。29.在声明成员变量的时候,没有被关键字static修饰 的变量是实例变量。30.在声明成员方法的时候,用关键字static修饰的方 法是类方法,类方法也称为静态方法。31.在声明成员方法的时候,没有被关键字static修饰 的方法是实例方法。32.调用类方法有两种情况,一种是通过类名调用类方 法,另一种是通过对
6、象名调用类方法。33.在面向对象的程序中,方法是用于定义对象的某个 特定功能的代码段。34.方法名和方法的参数类型称为方法的签名。35.调用方法的语句格式是reference,method(arguments)。36.编译源程序时,编译器会为方法添加一个隐式参 数,用来存储运行时刻传来的当前对象的引用。37.面向对象技术有三个基本特性,分别是封装、继承 和多态。38.包含在对象属性中的数据值的集合通常称为对象的状态。39.对象除了保存数据之外,还提供若干操作数据的方 法,用以描述的对象的行为。40.在Java中,对象的本体是用对象的引用表示的。41.封装有两方面的意思:一个方面是对象封装了功能
7、 的内部实现机制,另一个方面是对象封装了它持有的数据。42.在Java中,通过在类定义里面定义属性和方法,强制实现对数据和功能的封装。43.Java程序中的所有类都由系统类Object直接继承 或间接继承得到的。44.Java中的多态是指一个程序中同名的不同方法共存 的情况。45.Java中的多态为编译时多态和运行时多态两类。46.对象的类型转换分为upcasting和casting两种。47.所谓包就是Java语言提供的一种区别类名空间的 机制,是一组相关的类和接口的集合。48.Java中声明包的关键字是package,引用包中类或接口的关键字是importo49.Java中,打包就是将应用
8、程序所包含的类文件和其 它资源文件放到一个归档文件当中。50.JDK提供的打包工具是jaro51.使用接口实际上要做两件事:第一是声明接口(定义接口),第二是在类中实现接口。52.回调是一种常见的程序设计模式,这种程序设计模 式在Java中通常是用接口来实现。53.所谓异常,就是程序的运行时错误。54.“异常”产生时,意味着在当前环境下无法获得必 要的信息来解决问题,我们所能做的就是从当前环境中跳出,并 且把问题提交给上一级别的环境。55.我们把生成异常对象并把它交给运行时系统的异 常处理机制的过程称为抛出异常。56.运行时系统的异常处理机制在方法的调用栈中查找,从生成异常的方法开始回溯,直到
9、找到包含相应异常处理的 方法为止,这个过程称为捕获异常。57.编译器要求我们编写的程序必须对可检测的异常 进行处理,否则不能通过编译。58.异常通常由以下两种情况引起,一种是程序执行了不合法的动作,另一种是通过执行throw语句由程序显式抛出。59.按照数据的传输方向,流可以分为输入流和输出流 两类。60.按照数据的格式,流可以分为字节流和字符流两 类。61.系统类 FilelnputStream 和 Fil eOutput Stream 用于以 字节方式处理文件的输入和输出,称为文件输入/输出流。62.系统类FileReader和FileWriter用于以字符方式处 理文件的输入和输出,称为
10、文件读写器。63.系统类 BufferedReader 和 BufferedWriter 分别称为缓冲读取器和缓冲写入器。64.使用缓冲流的好处是可以减少系统和外部设备交换数据的次数。65.系统类DatalnputStream和DataOutputStream 称为数据输入/输出流,它们在输入输出数据的同时能对流中的数据进行变换处理。66.提供操作系统目录管理功能的文件类是Fileo67.用于文件的随机读写操作的文件类是RandomAccessFile。68.C语言程序员提供创建线程的机制是使用操作系统提供的库。69.通俗地讲,线程就是一个代码执行流。70.Java程序是从一个众所周知的入口点
11、开始执行的,即是从main。方法的第一条语句开始执行的。71.当Java程序启动时,系统就为它创建好一个线程,用这个线程执行main。方法中的代码序列。这个系统创建好的线程叫主线程。72.JVM创建的线程称为系统线程,我们自己在程序中用代码创建的线程称为用户线程。73.Java API提供创建线程的系统类是Thread,它的对象就是一个线程。74.线程类的获取当前线程对象引用的方法是current Thread(),获取当前线程名字的方法是 getName()。75.在 Java 中,线程被表示为 http:/ cdl8425189c.htmlng.Thread 类的一 个实例。76.一个线程
12、要完成一个应用任务,为了完成该应用任 务而编写的代码要放到run()方法中。77.创德好线程对象之后并不意味着这个线程就会被 处理机(川V)运行,还需要调用线程对象的start。方法启动线程。78.我们称实现了 Runnable接口的类为线程化的类,称 实现了该接口的类的实例为可运行的对象。79.从实现了 Runnable接口的对象创建线程对象的方 法是,建立一个单独的Thread对象,并把可运行 对象传递给专门的Thread类的构造方法。80.线程生命周期共有五个状态,分别是新建状态、就 绪状态、运行状态、阻塞状态和死亡状态。81.Java的线程调度策略采用抢占式调度。82.使用Swing编
13、写程序的图形界面要引入两个程 序包,其中包含Swing的基本类的程序包是java,swing,包含与处理事件相关的接口和类的程序 包是 java.awt.event o83.使用布局管理器要引入java,awt包。84.事件监听者必须实现与事件类型相对应的事件监 听接口才具有处理那类事件的能力。85.Java有三种窗口,分别是Applet窗口、框架窗口(JFrame)和无边框的窗口(JWindow)。86.设mw是一个JFrame窗口,取得mw的内容面板的语句是 mw.getContentPane()。87.要获取事件e的命令字符串,从而知道是哪一个 组件激发的事件,则应该使用的代码是e.ge
14、tActionCommand()。88.面板有两种,分别是普通面板JPanel和滚动面板JScrollPaneo89.布局管理器是实现了 LayoutManager接口的类。90.小应用程序和面板默认的布局管理器是FlowLayouto91.JWindow、JFrame和JDialog默认的布局管理 器是 BorderLayout o92.空布局就是把一个容器的布局管理器设置为null布 局。93.当把一个容器的布局管理器设置为null布局的时 候,可以使用setBoundsO方法手工设置组件本身的大小和组件在容器中的位置。94.菜单分为下拉式菜单和弹出式菜单两种。95.处理菜单项事件的接口是
15、ActionListener,要实现的 接口方法是actionPerformedO,获得事件源的方法是 getSource()。96.在Swing中,有两个对话框类,一个是JDialog类,它提供构造并管理通用对话框功能;另一个是JOptionPane类,它提供构造常见对话框功能。97.滚动条对象 的事件处理事件类型是Ad jus tmentEvent s,要实现的事件监听接口的方法是 adjustmentValueChanagedO,注册事件监听器的方法 是addAdjustmentListener(),获取事件源对象的方法 是 getAdjustable()o98.Java处理鼠标事件提供
16、了两个接口,分别是 MouseListener 接口和 MouseMotionListener 接口。99.Java程序连接数据库的方法有两种:一种是使用 JDBC-ODBC桥连接器与数据库连接,另一种 是使用JDBC驱动程序与数据库连接。100.Java提供数据库编程的API包是java.sqlo101.DriverManage类的getConnection()方法用于建立数据库 连接。102.java,sql包中用于处理特定数据库连接的类是 Connection 类。103.java.sql包中用于在指定的连接中处理SQL语句的类是 Statement 类。104.java,sql包中用于
17、管理查询结果集的类是ResultSet类。105.Statement类的用于执行SQL语句的方法是 executeUpdate()o 单项选择题1.Java程序的最基本的组成元素是(C)。(C)对象2.下列哪种类成员修饰符修饰的变量只能在本类中被 访问?(D)(D)private3.在Java语言中,哪一个包中的类是自动导入的?(A)(A)http:/ cdl8425189c.htmlng4.有一个类B,下面为其构造方法的声明,正确的是(B)(B)B(int x)5.下面关于类的说法,不正确的是(C)。(C)类就是 对象6.有如下代码段 class COuter int x=10;void s
18、howA()System,out.println(x);)void print()showB();)class CInner int x=20;void showB()System,out.println(x);)则下面说法正确的是(B)。(B)这段程序有错,原因是外部类直接使用了内部类的成员,而这是不对的7.Java语言中,类之间的继承关系是(A)。(A)单继 承8.在Java中,所有类的根类是(A)。(A)http:/ cdl8425189c.htmlng.Object9.如果局部变量和成员变量同名,如何在局部变量作 用域内引用成员变量?(B)(B)在成员变量前加this,使用this访问
19、该成员变量10.在使用interface声明一个接口时,只可以使用下述哪个修饰符修饰该接口?(D)(D)public11.下面关于接口叙述正确的是(A)o(A)实现一个接口必须实现接口的所有方法12.下面说法不正确的是(B)(B)abstract和final能同时修饰一个类13.自定义异常时,可以通过对下列哪一项进行继承?(C)(C)Exception类及其子类14.以下关于java异常说法不正确的是(D)(D)以上说法都不对15.运行下面程序时,会产生什么异常?(A)(A)ArithmeticExceptionpublic class X7_l_4 public static void ma
20、in(StringE args)int x=0;int y=5/x;int 口 z=1,2,3,4;int p=z4;)16.Java提供处理不同类型流的类的API包是(D)(D)java,io17.下列流中哪一个使用了缓冲区技术?(A)(A)BufferedOutputStream18.能读入字节数据进行Java基本数据类型判断过虑的类是(C)o(C)DatalnputStream19.下列哪一个import命令可以允许我们在程序中创建 输入/输出流对象?(C)(C)import java.io.*;20.如果需要从文件中读取数据,则可以在程序中创建 哪一个类的对象?(A)(A)Fileln
21、putStream21.下列流中哪个不属于字节流?(D)o(D)InputStreamReader22.下列说法中,正确的一项是(A)。(A)单处理机的计算机上,2个线程实际上不能并发执行23.下列说法中,错误的一项是(A)。(A)线程就是程 序24.下列说法中,错误的一项是(A)。(A)线程一旦创 建,则立即自动执行25.Thread类定义在下列哪个包中?(B)(B)http:/ cdl8425189c.htmlng26.下列哪个方法可以将MenuBar加入Frame中(D)?(D)setMenuBar()27.当单击鼠标或拖动鼠标时,触发的事件是(D)。(D)MouseEvent28.下列
22、哪一项不属于Swing的顶层组件(C)?(C)JTree29.下列说法中错误的是(B)o(B)JFrame的对象实例 化后,没有大小,但是可以看到30.声明并创建一个按钮对象b,应该使用的语句是(A)o(A)Button b=new Button();31.下列说法中错误的是(D)。(D)一个类只能实现一 个监听器接口32.如果容器组件p的布局是BorderLayout,则在p的 下边中添加一个按钮b,应该使用的语句是(C)。(C)p.add(b,South);33.Java中,JDBC是指(A)。(A)Java程序与数据库连接的一种机制34.JDBC的模型对开放数据库连接(ODBC)进行 了
23、改进,它包含(D)o(D)以上全部都是35.JDBC中要显式地关闭连接的命令是(A)o(A)Connection,close()简答题1.什么是Java虚拟机?它的主要功能是什么?答:JVM是在一 台计算机上由软件模拟,也可用硬件实现的假想的计算机,它定 义了指令集(相当于中央处理器CPU)、寄存器、类文件结构栈、垃圾收集堆、内存区域等。JVM是执行Java程序的引擎。Java程序编译后得到的二进制形式的字节码实际上就是JVM指令。2.常用的常用系统包有哪些?它们各自的主要功能 Java API 包令功能令 java.applet令 提供对通用Applet的支 持,是所仃Applet的基类令
24、java.awt令提供组建标准图形用户界 面(GUI 的系统类。包含 了众多的图形组件、方法和 事件Q java.lang令包含Java语言的核心类库令 令 实现Java网络功能的类庠令 java,io令包含愉入输出类 java.security支持Java程序安全性令 java.util令提供各种实用工具类在定义成员变量时,如果用static修饰符修饰,则该变量是类 变量(也称“静态变量”),否则是实例变量。类变量不属于类的任何一个具体对象。它保存在类的内存区域的 公共存储单元。类的任何一个对象对类变量的存取都是对同一个 内存单元进行操作。与类变量相对,实例变量属于类的某个具体的对象。它在类
25、的每 个对象的内存区域中都保存一份。类的任何一个对象对实例变量 的存取都是对自己内存区域内保存的实例变量的副本进行操作。4.类方法和实例方法有哪些不同?答:类方法不针对特定的对象,所以在没有创建对象之前可以执行。但是在类方法中只能访问类变量和类方法,而不能访问实例变量 和实例方法。实例方法则只能针对特定的对象执行,因此,如果任何对象都不 存在,则也就没有可以执行的实例方法。另外,尽管实例方法专用于类中的对象,但在内存中也只有一份 实例方法,供类中的所有对象共享。因为为每个对象都复制一份 实例方法的代价太大了。系统中有一种专门机制来保证:每当通 过对象调用一个实例方法时,代码都按照专用于某个对象
26、的方式 运行。5.什么是多态?Java的编译时多态和运行时多态有什么区别?答:Java中的多态就是指一个程序中同名的不同方法共存的情况。分为编译时多态和运行时多态两类。方法重载可以实现Java的编译时多态。它是在相同类内,定义 名称相同,但参数个数或参数类型不同的方法。编译器会根据实 参的个数和类型,确定调用哪个方法。所谓编译时多态,是指程 序会根据参数的不同来调用相应的方法。具体调用哪个被重载的 方法,是由编译器在编译阶段决定的。所以编译时多态也叫做静 态多态性。方法覆盖可以实现Java的运行时多态。它是在子类 当中,定义名称、参数个数与类型均与父类相同的方法,用以改 写父类方法的功能。运行
27、时多态是一种在运行时,而不是在编译 时调用覆盖方法的一种机制。对于覆盖的方法,Java运行时系 统根据调用该方法的实例的类型,来决定选择哪个方法调用。6.什么是包?包的作用有哪些?答:所谓包就是Java语言提供的一种区别类名空间的机制,是一组 相关的类和接口的集合。包有以下作用:(1)有效解决了类名冲突问题。当声明的类很多时,类名冲突 的可能性很大,引入包后,只要一个包中的类名不冲突就可以,不同包中的类名可以相同。(2)包体现了 Java语言面向对象特性中的封装机制。包将java 语言的类和接口有机地组织成层次结构,这个层次结构与我们平 常使用电脑时见到的具体的文件系 统的目录树结构层次一致。
28、(3)包还可以控制类之间的访问。类之间的访问控制是通过类 修饰符来实现的,若类声明修饰符public,则表明该类不仅可 供同一包中的类访问,也可以被其它包中的类访问。若类声明无 修饰符,则表明该类仅供同一包中的类访问。7.如何在程序中引入其它包中的代码?答:将类组织成包的目的是为了更好地利用包中的类。通常一个类只 能引用与它在同一个包中的类。如果需要使用其它包中的 public类,则可以使用如下的几种方法。(1)在引入的类前加 包名。对于同一包中的其它类可直接引用;对于不同包中的其它 类引用时需在类名前加包名。(2)用import关键字加载需要使用的类。利用import关键字 加载需要使用的类
29、当前程序中,这样在程序中引用这个类的地方 就不需要再使用包名作为前缀。(3)上面的方法利用import语句加载了其他包中的一个类。若 希望引入整个包也可以直接利用import语句。例如,语句 import shape.*;该语句的作用是把shape包中的所有类加载到当前程序中。与加 载单个类相同,加载整个包后,凡是用这个包中的类,都不需要 再使用包名前缓。8.什么是接口?它的作用是什么?答:在Java中,接口不是类,而是一组抽象方法和常量的集合,用 来描述类应该提供什么样的功能。在接口中定义的方法仅仅给出 方法名称、参数列表、返回值类型等信息的说明,并不给出方法 体的具体代码,即没有给出方法功
30、能的具体实现。在程序中定义 了一个接口以后,就可以声明某些类实现了这个接口,在实现了 该接口的类中再给出接口的方法的功能代码。这相当于用接口规 范了实现接口的那些类都必须以特定的形式提供一组特定的功能。反过来,实现某个接口的类必须提供该接口规定的 功能,并且要遵从接口中定义的方法的格式约定。9.什么是内部类?使用内部类有什么好处?答:可以将一个类的定义放在另一个类的内部。定义在另一个类内部 的类就是内部类。内部类允许我们把一些逻辑相关的类组织在一 起,并控制在内部的类的访问特性。内部类的对象持有一个隐式 引用,它引用了实例化该内部对象的外围类对象。通过这个引用,可以访问外围类对象的全部状态。1
31、0.什么是异常?Java处理异常的方法是什么?答:所谓异常,就是程序的运行时错误。Java通过面向对象的方法来处理异常。在一个方法的运行过程 中,如果发生了一个异常,则Java虚拟机会如同创建其它对象 一样,使用new在堆上创建异常对象。然后,当前的执行流程 被终止,并且从当前环境中弹出异常对象的引用。此时,Java的 异常处理机制接管程序,并开始寻找一个恰当的的地方来继续执 行程序。这个恰当的地方就是“异常处理程序”,它的任务是将 程序从错误状态中恢复或者做一些简单地处理后结束程序。11.在编写程序时如何在抛出异常的方法内部处理异 常?答:使用try catch finally代码块监视和处
32、理异常。如果try语句的代码引发(抛出)的异常与后面某个catch语 句的参数的类型匹配,则用该catch语句块中的代码处理该异 常。如果不匹配就往后找有没有其它的catch语句的异常参数 类型匹配。如果所有的catch语句的异常类型与try语句代码 段实际产生的异常都不匹配,则执行finally语句的代码。另外,try语句的代码段 在执行过程中也有可能不产生异常,此时不管有没有异常产生,try语句的代码段执行完了之后都会执行finally语句的代码 段。try catch finally代码块全部执行结束之后,如果 中间没有出现任何控制转移,程序将在catch或finally之后 继续执行。
33、12.在编写程序时如何把异常交给方法调用者去处理?答:可以在产生异常的方法内部自己处理异常,也可以不自己处理,而是简单的声明自己可能会抛出哪些类型的异常,如果方法代码 执行过程中真的产生异常了,那么就让方法调用者去处理。方法 是在方法声明中使用throws短语声明该方法可能会抛出哪种 类型的异常。13.简述异常的传播途径。答:在“trycatchfinally”结构中,如果没有一个catch子 句能够匹配已经产生的异常,则执行finally子句(如果存在)。此时,如果仍然没有程序能够处理这个异常,好像发出异常的语 句根本没有嵌套在try语句中,控制流程将会立即离开当前方 法,过早地返回调用当前
34、方法的方法中。如果这个调用语句处于 某一个try语句范围之内,则将开始执行新一轮的异常匹配操 作。14.简述异常的层次结构。答:当有异常发生时,Java虚拟机会生成异常对象交给运行时系统。异常对象是异常类创建的。Java中的异常类是以一定的层次结 构来组织的。下图表示了异常处理的类层次。Object4ThrowableError ExceptionLinkageError RuntimeExceptwn ArraylndexOutOfBoundsException 15.简述Java中流的概念和作用。答:直观地说,流就是用于处理输入/输出的字节序列或字符序列。Java把程序与各种实际设备之间的
35、数据输入输出的处理细节都 封装在称为“流”的系统类中。这样,虽然各种实际设备的差别 很大,但是我们可以通过Java平台提供的“流”类,使用相同 的方法来连接数据资源和应用程序。java,io程序包中提供了大 量的数据流类,编程人员只要使用相应的数据流类,就可以与相 应的设备交换数据。16.什么是线程?使用多线程有哪些好处?有会带来 哪些问题?答:通俗地讲,线程是一个代码执行流。使用多线程的好处是:(1)多线程为多个代码执行流并发执行 提供了可能。(2)多线程程序比多进程程序降低了资源占用要 求。使用多线程也会对系统产生一些不利影响:(1)线程需要占用 内存,线程越多,内存占用越多。(2)线程过
36、多,会消耗大量 CPU时间来跟踪线程。(3)必须考虑多线程同时访问共享资源 的问题,如果没有协调好,就会产生令人意想不到的问题,例如 死锁和资源竞争等。(4)因为同一个任务的所有线程都共享相 同的地址空间,并共享任务的全局变量,所以程序也必须考虑多 线程同时访问的全局变量问题。17.试比较Runnable接口中定义的run()方法与 Application程序入口 main。方法有那些相近之 处。答:在Runnable接口中定义的惟一的方法是run(),在线程执行时 调用。线程退出run()之后,就已经死亡,无法重新启动或复 用。不管是正常退出还是由于未捕获异常退出,情况都是如此。在效果上,线
37、程的run()方法与Java应用程序的main。方法 作用相同:就是代码的初始入口点。在应用程序中,mianO控 制程序的主流程,在线程中,run()控制线程任务的处理流程。从本质上来说,对于一个新创建的线程,run()方法可以被看成 是main。方法:如同程序是从main。方法开始运行一样,新线 程就是从其run()方法开始运行的。但是main。方法从argv 来获取它的参数(argv 一般是通过命令行来设定的),而新创 建的线程是用编程的方式从原始线程获取它的参数的。因此,我 们可以通过构造方法、静态实例变量或者程序员设计的其他技术 来获得这些参数。18.Java线程的生命周期有哪些状态?
38、简述线程状态转换方式。答:一个线程从创建到工作到死亡的过程称为线程的生命 周期。线程生命周期共有五个状态:新建状态、就绪状态、运行 状态、阻塞状态和死亡状态。新建状态是指创建了一个线程,但它还没有启动。就绪状态是当前线程处于新建状态后,调用了 start。方法,线程就处于就绪状态。就绪状态的线程具备了运行条件,但尚未 进入运行状态。运行状态是某个就绪状态的线程获得CPU资源,正在运行。阻塞状态是正在运行的线程遇到某个特殊情况。例如,延迟、挂 起、等待I/O操作完成等。进入阻塞状态的线程让出CPU,并暂 时停止自己的执行。线程进入阻塞状态后,就一直等待,直到引 起阻塞的原因被消除,线程又转入就绪
39、状态,重新进入就绪队列 排队。死亡状态是指线程不再具有继续运行的能力,也不能再转到其他 状杰。19.简述Java线程调度机制。答:Java的线程调度机制负责调度线程。Java的线程调度策略采用 抢占式调度,优先级高的线程比优先级低的线程优先执行。在优 先级相同的情况下,就按“先到先服务”的原则调度线程。Java 有专门的调度器,它的任务是使优先级高的线程能始终运行,一 旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序 使用时间片。只有当高级别的线程死亡时(除非用sleep(int mi 11 second)或wait。方法让出CPU资源),低级别线程才有 机会获得CPU资源。线程的优先
40、级用数值表示,数值越大优先级越高(范围110)O 每个线程根据继承性自动从父线程获得一个线程的优先级,也可 在程序中重新设置线程的优先级。对于任务较紧急的重要线程,可安排较高的优先级。相反,则给一个较低的优先级。20.什么是守护线程?它和非守护线程有什么不同?答:所谓“守护线程(daemon thread)是指,只要程序还在运行,它就应该在后台提供某种公共服务的线程,但是守护线程不属于 程序的核心部分。因此,当所有非守护线程都运行结束的时候,程序也结束了。相反,只要还有非守护线程在运行,程序就不能 结束。事实上,“守护线程”和“非守护线程”本质上并没有什么区别,只是JVM对其控制的方式有所不同
41、而已。主要表现在:第一,守护线程一般是在后台提供某种服务,而非程序核心部分的线 程,所以它的优先级最低。这意味着JVM会尽量先调度那些非 守护线程运行。第二,程序中所有非守护线程都已结束运行时,程序就结束。21.什么是事件?什么是事件驱动工作方式?答:事件泛指由用户或系统触发的一个特定操作。例如:用鼠标单击 命令按钮,将触发一个按钮的Click事件;用鼠标选择一个菜单 项,会产生一个菜单项的选择事件,等等。事件驱动工作方式是 指,程序启动后,执行一系列初始化操作,然后处于等待状态。当用户或系统触发某个事件之后,程序马上就去执行与该事件对 应的过程。待事件过程执行完毕后,系统又处于等待某事件发生
42、 的状态。程序的这种工作方式称为事件驱动工作方式。具有图形界面的Java程序使用事件驱动工作方式。编写具有图 形用于界面的Java程序时不仅要创建程序的图形界面,还要编写相应的事件处理代码,这样程序才能响应用 户的操作。22.Java GUI库代码提供的基本功能有哪些?答:Java通过提 供GUI库提供对图形用户界面编程的支持,GUI库的代码提供 了这样一些基本功能:创建用户界面的“控件”或组件,如滚动条、按钮和标签等。通过把GUI事件(例如单击按钮)和程序程序员编写的事件处 理代码关联起来,可以控制组件的动作。支持对屏幕上的组件进行分组和布局。支持访问窗口管理器,指定某个窗口作为输入焦点,读
43、取JPEG 和其它影响文件,以及进行打印等。23.如何用分层次的方法看待组件和容器之间的关系?答:容器和组件通常是具有一定的包含关系的。可以按照这样的观点 分层次:顶层容器(不会包含在其它任何容器中的容器),例如JFrame、JApplet、JDialog、JWindow 等;中间容器,例如 JPanel JScrollPane JSplitPane JToolBar 等;基本控件,例如 JButton、JComboBox、JList、JMenu、JTextField 等;可编辑的组件,例如 JColorChooser、JFil eChoos er、JTextArea 等。在构建程序的图形界面
44、时,一般一次创建顶层容器,中间容器,基本控件和可编辑组件,然后再把基本控件和可编辑组件放到中 间容器中,最后再把中间容器放到顶层容器中。24.Java是如何管理组件布局的?答:在容器中可以放置许多组件,需要合理地安排这些组件在容器中 的位置才能使界面方便使用并且美观,这些工作就是组件的布局 设计与管理。每个容器都有一个布局管理器用来管理放到这个容器中的组件的布局。当容器需要对某个组件进行定位或判断其大小 尺寸时,就会调用其对应的布局管理器。布局管理器可以使我们 生成的图形用户界面具有良好的平台无关性。在Java语言中,用布局管理器来管理组件在容器中 的布局,而不直接设置组件位置和大小。容器通过
45、选择不同的布 局管理器来决定布局。25.什么是事件源?什么是事件监听者?它们之间是 如何配合实现事件处理的?答:Java中把能够产生事件的组件叫做事件源。这个程序中的按钮 就是一个事件源。在Java中,事件源产生的事件并不是由事件 源本身处理,而是由其它对象来处理。用来处理事件的对象叫做 事件监听者或事件监听器。系统把事件源产生的事件交给事件监听者处理,事件监听者使用 相应事件监听接口的事件处理方法处理该事件。26.要让应用程序在框架窗口关闭后退出,可以使用哪 些办法?答:在有着多个框架的程序中,可能不能因为用户关闭了多了框架中 的一个就让程序全部退出。默认情况下,当用户关闭一个框架时,该框架
46、会隐藏起来,但应用程序不会终止。要退出程序,可以使 用语句fra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);或 者在已注册的WindowListener对象的windowClosing方法中 去退出程序,比如在那里使用语句System.exit(0);27.简述JFrame框架的基本结构。答:JFrame框架的基本结构。其基本结构如下图所示:JFrame窗口中包含一个JRootPane类的实例(对象),用这个 对象管理放到框架窗体中的元素。JRootPane面板包含一个 glassPane 面板和一个 JLayeredPane 面板。glas
47、sPane 面板能 够截取鼠标移动,而JLayeredPane面板负责管理contentPane 内容面板和JMenuBar菜单。程序中要使用的按钮、列表框等组 件不是直接添加到JFrame框架窗口,而是需要添加到内容面板 中,而川enuBar对象则负责管理出现在框架窗口顶部的菜单。28.简述给窗口添加菜单的基本过程。答:(1)创建所需要的菜单条对象、菜单对象和菜单项对象。(2)把菜单项添加到菜单对象。(3)把菜单添加到菜单条对象。(4)把装配好的菜单条对象添加的窗口对象。29.简述Java程 序与数据库连接的基本方法。答:Java程序连接数据库的方法 有两种:一种是使用JDBC-ODBC桥连
48、接器与数据库连接,另 一种是使用JDBC驱动程序与数据库连接。用JDBC-ODBC桥连接器与数据库连接的基本过程:(1)建 立ODBC 数据源。(2)在程序中使用 Class,forName(nsun.jdbc.odbc.JdbcOdbcDrivern)加 载 JDBC-ODBC 驱动程序。(3)使用 DriverManager.getConnection(myUrl,user,password)建立 数据库连接(4)使用相应语句做其它操作。使用JDBC驱动程序与数据库连接的过程:(1)下载和安装相 应的JDBC驱动程序。(2)在程序中使用 Class.forNameCcom.microsof
49、t.jdbc.sqlserver.SQLServerD river)加载JDBC驱动程序。(3)使用 DriverManager.getConnection(myUrl,user,password)建立 数据库连接(4)使用相应语句做其它操作。30.常见的Java数据库编程API有哪些?它们的主 要功能分别是什么?答:DriverManage类是java,sql包中用于管理数据库驱 动程序的类。它处理驱动程序的加载和建立数据库连接。DriverManage类的静态方法getConnection。用于建立数据 库连接。该方法返回一个Connection对象。Connection类是java,sql包中用于处理特定数据库连接的类。Connection对象表示一个实际的数据库连接,在操作 数据库之前应该首先建立数据库连接,取得Connection对象。Statement类是java.sql包中用于在指定的连接中处理SQ