1、什么是面向对象技术 ?它有什么优点 ?

通过面向对象的方式, 将现实世界的物抽象成对象, 现实世界中的关系抽象成类、 继承,帮助人们实现对现实世界的抽象与数字建模。 程序设计者考虑的是对象的描述、 对象间的关系、类的管理、什么时候和什么地方调用对象的哪一种方法。
面向对象技术的最大优点是有效支持重用 , 使得大的程序也变得相对容易维护。

2、 面积对象的程序设计和面向过程的程序设计有什么区别?
面向过程语言编程模式是:
程序=数据结构 +算法
编程时需要考虑和内容是的程序什么、怎么做、重点考虑每个实现的细节。
面向对象的语言的编程模式是:
程序=对象 +消息
程序设计者考虑的是对象的描述、 对象间的关系、 类的管理、 什么时候和什么地方调用
对象的哪一种方法。

3、在程序中类和对象有什么区别?
类是同一种对象的描述, 类概括了同类对象的共有性质: 数据和方法。 类的每个对象都
有自己的标识,但它们具有相同的一级属性和提供相同的方法。
在程序中, 对象的名称用于捐弃引用对象, 对象的成员变量用于存储对象的状态值, 对象和方法用于描述对象的行为。

4、类变量和实例变量,以及类方法和实例方法的区别。

5、子类能继承超类的哪些成员变量和方法?

6、子类在什么情况下能隐藏超类的成员变量和方法?
解:在子类重载父类的成员变量、方法的情况下。

7、在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?
解:不允许!方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。 (与方法重载不同)

8、 试说出对象、类、继承和多态性的概念。

所有东西都是对象,现实世界中的对象都有状态、行为和名称。
类是同一种对象的描述, 类概括了同类对象的共有性质: 数据和方法。 类的每个对象都有自己的标识,但它们具有相同的一级属性和提供相同的方法。
继承就是在已有类的基础上扩充属性, 或扩充或者改写其某些方法, 生成新的类。 继承定义 的类称为子类,被继承的类称为超类。子类继承父类具有的属性和方法,还可增加某些特殊性,并可扩充和修改部分行为。继承具有传递性。
多态性指同样的消息被不同类型的对象接收时导致完全不同的行为。 方法的重写、 重载
与动态联编构成多态性。

9、为什么要定义抽象类?为什么抽象类没有具体的对象?

如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。 抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念, 是对一系列看上去不同,但是本质上相同的具体概念的抽象。
正是因为抽象的概念在问题领域没有对应的具体概念, 所以用以表征抽象概念的抽象类是不能够实例化的,即没有具体的对象的。

10、 试比较接口和抽象类的异同。使用接口有哪些注意事项?

相同点:两者定义的方法均是抽象方法,即没有实现的代码。
不同点:
(1) 方法的实现者不同。抽象类的方法实现交给每一个子类去完成,而接口则是一些列没有实现代码的方法 (即抽象方法) 和常量的组合, 方法的实现则要在实现这个接口的类中完成,但它不限定类如何实现这些方法。

(2) 继承方式不同。接口使得类不必受限于单一继承的关系,接口本身可以继承多个父接口,而实现接口的类也可以继承一个类和实现多个接口。对有继承并实现接口的类来说,
实际上实现了有控制的多继承,而抽象类的子类则不能实现多继承。

(3)实现某个接口的类必须实现该接口的所有方法,而抽象类的子类实现其超类的方法早则没有这种限制。

11、指出 Applet 的程序结构及各方法的作用。

程序结构:

public class Applet 程序名 extends java.applet.Applet{public void init(){ , }
public void start(){ , }
public void stop(){ , }
public void destroy(){ , }
public void paint(Graphic g){ , }
,
}

方法:
Java API 的 Applet 类为您提供设计 applet 程序外观并管理 其动作时所需要的支
持。该类提供一种叫做 Panel (面板)的图形 用户界面( GUI)组件以及大量方法。其基本
方法有: (P63-64)
init() 方法、 start() 、stop() 、destroy() 、 paint() 、repaint() 、update()要创建一个 applet 程序, 就需要扩展该 Applet 类(或创建子类) 并实现您所需要的外观和动作。

12、以下程序有什么错误?

public class Takecare{int a=90;
static float b=10.98f;
public static void main(String args[]){float c=a+b;System.out.println( “=”+c);
}
}

解:类方法 main() 调用了类的实例变量, main 方法是类方法,不能调用类的实例变量a,导致错误!

13、什么是继承 ?什么是父类 ?什么是子类 ?继承的特性可给面向对象编程带来什么好处?什么是单重继承 ?什么是多重继承 ?

答 :.答:继承是面向对象程序设计中两个类之间的一种关系。当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时, 就称这两个类之间具有继承关系。 被继承的类称为父类或超类, 继承了父类或超类的所有数据和操作的类称为子类。

面向对象程序设计中的继承, 可使得程序结构更加清晰, 降低了编码和维护的工作量。如果一个类只能有一个父类, 则这种继承关系称为单重继承; 如果一个类可以有多个父类,则这种继承关系称为多重继承。

14、“子类的域和方法的数目一定大于等于父类的域和方法的数目” ,这种说法是否正确 ?为什么 ?

答:这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能

继承所有非私有的域和方法。 如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目

15、4在 Java程序中,通过类的定义只能实现单重继承 ()
答 :
答: true

16、5下列哪些说法是正确的?
A、 Java 语言只允许单一继承
B、 Java 语言只允许实现一个接口
C、 Java 语言不允许同时继承一个类并实现一个接口
D、 Java 语言的单一继承使得代码更加可靠
答 :AD

17、请写出下面程序的运行结果。

public class Test extends TT{public void main(String args[]){Test t = new Test("Tom");
}
public Test(String s){super(s);
System.out.println("How do you do?");
}
public Test(){this("I am Tom");
}
} www. E xamda.CoM
class TT{public TT(){System.out.println("What a pleasure!");
}
public TT(String s){this();
System.out.println("I am "+s);
}
}

结果: ________

答 :
What a pleasure!
I am Tom
How do you do?

18、父类的成员在子类中的访问权限由决定。
答 :访问权限修饰符

19、对象的使用包括引用对象的成员变量和方法。 通过运算符就能实现对对象成员变
量的访问和对象
答 :
“.”
20、Java 是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念。
答 :软件模型

21、1.列出 5 个常见的异常。

答 :内存耗尽、数组下标超出边界、被 0 除、非法的方法参数、算法溢出处。

22、2.写出 Java 语言的异常处理机制的优点。
答 :
( 1)Java 通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特 性的复杂提供了强有
力的控制方式。
(2)Java 的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。
(3) Java的异常处理机制使得异常事件可以沿调用栈
自动向上传播,而不是 C 语言中通过函数的返回值来传播,这样可以传递更多的信息,并且简化了代码的编写。
(4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。

23、为什么异常处理技术不应该用于常规的程序控制?

答 :
a. 异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理。
b. 常规控制结构的控制流程通常比异常的更为清晰、
交流更高。
c. 在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题。
d.“额外的”异常会妨碍真正错误类型的异常。这种使程序员更难 以跟踪大量的异常。

24、4引起异常产生的条件是什么?
答 :答:异常产生的方式有 3 种。第一种是在某些内部错误时, Java 虚拟机可以产生异常, 该异常不在你的程序控制范围内, 通常不作处理。 第二种是由程序代码中的错误引起,这种异常需要你的程序处理。第三种是通过使用 throw 语句手动生成的异常。

25、5.异常没有被捕获将会发生什么?
答 :未捕获的异常最终会导致程序非正常终止。

26、怎样区分应用程序和小应用程序?

一个 java 应用程序必须且只有一个类含有 main 方法, 这个类称为应用程序的主类, 其 main
方法必须被说明为 public static void (1 分)
一个 Java Applet 小应用程序不再需要 main 方法,但必须有一个类扩展了 Applet 类,即它
是 Applet 类的主类。 2.5 分)

27、7.下面的代码段中 finally 语句块会被执行吗?

public class ExceptionExam3
{public static void main(String [] args)
{try
{int [] a=new int[3];
System.exit(0);
}
catch(ArrayIndexOutOfBoundsException e)
{System.out.println(" 发生了异常 ");}
finally
{System.out.println("Finally");}
}
}

答 :
无论是出于何种原因,只要执行离开 try/catch 代码块,就会执行 finally 代
码块。即无论 try 是否正常结束,都会执行 finally 定义的最后的代码。如果 try 代码块中的
任何代码或它的任何 catch 语句从方法返回, 也会执行 finally 代码块。 但本题中在 try 代 码
块中执行了“ System.exit(0);”语句,执行了这一语句后, Java 虚拟机( JVM )将被终止。
那么 finally 语句块一定不会被执行。

28、8. throws 的作用是什么?

答 :答:在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在 throws 子句中声明该异常。

29、9.应在程序的什么地方使用异常处理?

答 :通常,可以采用两种方式来报告错误:返回值和异常。在 Java中异常处理很常用, 虽然返回错误代码在某些情况下是一种有效的方式, 但是异常处理可以提供强大的结构化方法来处理异常。所以需要处理代码中的错误时可以采用异常的方法进行处理。

30、10.下面的代码有什么错误吗?

class ExceptionExam{ , }
throw new ExceptionExam();

答 :
ExceptionExam 不是继承(扩展) Throwable 的子类,只有 Throwable 的子类可以由 throw 抛出。所以,这一段代码会出错。

31、11.异常类型匹配的处理方式。 程序功能: 首先输出 “这是一个异常处理的例子” ,
然后在你程序中主动地产生一个 ArithmeticException 类型被 0 除而产生的异常, 并用 catch
语句捕获这个异常。最后通过
答 :

public class ExceptionExam1
{public static void main(String [] args)
{try
{int i=0;
i=3/i;
}
catch(ArithmeticException e)
{.........
System.out.println(" 异常是: "+e.getMessage());
}
finally
{System.out.println("finally  语句被执行 ");
}
}
}

注意:如果在 catch 语句中声明的异常类是 Exception ,catch 语句也能正确地捕获,
这是因为 Exception 是 ArithmeticException 的父类。如果不能确定会发生哪种情况的异常,
那么最好指定 catch 的参数为 Exception ,即说明异常的类型为 Exception

32、 Java中共有哪些基本数据类型?

基本类型共有 8 种,分四类分别是 1 分)
逻辑型 1 分)
字符型 1 分)
整型 1 分)
浮点型 1 分)

33、13.什么叫流?流式输入输出有什么特点?

答 :所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,
Java 把这些不同来源和目标的数据都统一抽象为数据流。 数据流可分为输入流和输出流, 输入流代表从其他设备流入计算机的数据序列, 输出流代表从计算机流向外部设备的数据序列。
流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行, 即每一个数据都必须等待排在它前面的数据, 等前面的数据读入或送出之后才能被读写。 所以流和队列一样,
只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置。

34、14.Java 流被分为字节流、字符流两大流类,两者有什么区别?

答 :
两者都作为 Object 类的直接子类,基本输入流(无效 Stream)和基本输出流( OutputStream)是处理以 8 位字节为基本单位的字节流类; Reader和 Writer 类是专门
处理 16 位字符流的类。

35、15.File 类有哪些构造函数和常用方法?
答 :
构造函数有:
(1)public File(String pathname) :创建一个对应于参数 pathname 的 File 类对象。
参数 pathname 是包含目录和文件名的字符串。如果没有文件名,则代表目录。
(2)public File(String parent , String child) :该构造函数将 pathname分成两部分 parent和 child ,参数 parent 表示目录或文件所在路径,参数 child 表示目录或文件名称。
(3)public File(File parent, String child) :该构造函数与上面一个不同在于将 parent的参数类型由 String 变为 File,代表 parent 是一个已经创建的 File 类文件对象 (指向目录) 。
常用方法有:
(1)public boolean canWrite( ) :返回文件是否可写。
(2)public boolean canRead( ):返回文件是否可读。
(3)public boolean createNewFile( ) :当文件不存在时创建文件。

36、 java 源文件的命名规则是什么 ?

如果源文件中有多个类,那么只能有一个类是 public 类 1 分)
如果有一个类是 public 类,源文件的名字必须与这个类的名字完全相同,扩展名是 java
2 分)
如果源文件没有 public 类,源文件的名字只要和某个类的名字相同,并且扩展名是 java
2 分)

37、 怎样区分应用程序和小应用程序?

一个 java 应用程序必须且只有一个类含有 main 方法, 这个类称为应用程序的主类, 其 main
方法必须被说明为 public static void (1 分)
一个 Java Applet 小应用程序不再需要 main 方法,但必须有一个类扩展了 Applet 类,即它
是 Applet 类的主类。 2.5 分)

38、位置指针的作用是什么? RandomAccessFile 类提供了哪些方法实现对指针的控制?
答 :

import java.io.*;
public class NewFile{public static void main(String args[]){File f=new File("test");
if(f.exists()&&f.isDirectory())
System.err.println(" 目录: "+f.toString()+" 已经存在 !");
else{if(f.mkdir()){System.out.println(" 目录 "+f.getAbsolutePath()+" 创建结束 !");
File f2=new File(f,"my.txt");
try{f2.createNewFile();
f2.setReadOnly();
}catch(IOException e){System.out.println(e.toString());
}
System.out.println(" 文件: "+f2.getAbsoluteFile()+" 创建结束 !");
}
else
System.out.println(" 目录 "+f.getAbsoluteFile()+" 创建失败 !");
}
}
}

答 :
要实现对文件的随机读取, 也就是在文件的任何位置执行读写数据的操作,
需要一个指针来指定读写的位置。在创建 RandomAccessFile 类对象的同时,系统自动创建
了一个指向这个文件开头的指针, 当执行读写操作后, 指针自动指向被读写数据之后的第一
个字节 处。指针初始值是 0,每读 /写一个字节,指针自动增加 1。RandomAccessFile 类提
供了一些控制指针移动的方法。
public long getFilePointer(); 获取当前指针指向文件的位置。
pulbic void seek(long pos); 将指针移动到参数 pos指定的位置。
public int skipBytes(int n); 指针从当前位置向后移动 n 个字节位置, 并返回指针实际移动的字节数。

39、简述 java 语言的特点 ?

Java语言是目前使用最为广泛的网络编程语言之一 (1 分)
具有面向对象 (1 分)
与平台无关性 (1 分)
多线程性 (1 分)
动态性等特点 (1 分)

40、简述 Java

1 使用一个文字编辑器,编写源文件。 1 分)
2 使用 java 编译器,编译源文件得到字节码文件。 2 分)
3 运行 java 程序,分两种 java 应用程序必须通过 java 解释器来解释执行, java 小应用程
序必须使用解释器和浏览器运行程序。 2
分)

41、 java 源文件的命名规则是什么 ?

如果源文件中有多个类,那么只能有一个类是 public 类 1 分)
如果有一个类是 public 类,源文件的名字必须与这个类的名字完全相同,扩展名是 java 2 分)
如果源文件没有 public 类,源文件的名字只要和某个类的名字相同,并且扩展名是 java 2 分)

42、Java 程序可以通过调用哪个方法完成重画任务?
答 :repaint()

43、 Java中数据类型分别用什么符号来表示?

逻辑型用 boolean 表示 1 分)
字符型用 char 表示 1 分)
整型共有 4 种分别是 byte、short、 long、int 2 分)
浮点型共两种 float 和 double 1 分)

44、 简答表达式 ++x 和 x++的区别

++x 表示在使用 x 之前,先使 x 的值加 1
x++表示在使用 x 之后,使 x 的值加 1

45、Java 运算符按功能分 6 种,具体如下 1 分)
算术运算符、关系运算符、逻辑运算符 2 分)
位运算符、赋值运算符、条件运算符 2 分)

46、Java中结构化程序设计有哪三种基本流程及分别应 java 中那些语句

结构化程序设计有顺序、分支、循环三种基本流程 2 分)
java 中的分支语句包括 if 语句、 switch 1 分)
循环语句包括 while 语句、 do-while 语句、 for 1分)
其他如对象、变量定义语句、赋值语句、方法调用语句等都是顺序语句。 1 分)

47、在一个循环中使用 break 和 continue 语句有什么不同的效果?

在循环中使用 break 语句将使循环终止,流程跳转到 break 语句所在的循环外面的第一个语
句继续执行 2.5 分)
在循环中使用 continue 语句将提前结束本次循环, 流程跳转到 continue 语句所在循环的第一
个语句继续执行 2.5 分)

48、package 语句与 import 语句分别作用是什么?

package语句作为 java 2.5 分)
import 语句作用是为了能使用 java 提供的类, 可以使用 import 语句来引入所需要的类。 (2.5
分)

49、 简述编程语言的几个发展阶段

1 面向机器语言 (1 分)
2 面向过程语言 (1 分)
3 结构化程序设计阶段 (1 分)
4 面向对象编程 (1 分)

50、什么是类及类的实现包括什么

类是组成 java 程序的基本要素 (1 分)
类封装了一类对象的状态和方法 (1 分)
类是用来定义对象的模板 (1 分)
(1 分)

51、 什么是方法重载

2 分)
但这些方法的参数必须不同( 1 分)
或者是参数个数不同,或者是参数类型不同( 1 分)

52、构造方法是一种特殊方法 (1 分)
它的名字必须与它所在的类的名字完全相同 (1 分)
并且不返回任何数据类型,即它是 void 型 (1 分)

53、 java 是否支持多继承及 java

Java 不支持多继承,即一个类只能有一个父类。 2 分)
单继承性使得 java 简单,易于管理程序 1 分)
为了克服单继承的缺点, java 2 分)

54、处理选择 (Choice)控件上的事件 ?

选择控件的选择情况发生变化会产生 HemEvent 事件 (1 分)
处理该事件的接口是 HemListener (1 分)
接口中的方法是 ItemStateChanged(HemEvent e) (1 分)
事件源获得监视器的方法是 addHemListener( ) (1 分)
getHemSelectable( ) (1 分)

55、如何处理滚动列表 (List) 上的事件 ?

1、滚动列表可产生两种事件 :双击和单击某项 (1 分)
2、当双击某项时,产生 ActionEvent 事件,获得事件监视器的方法是 addActionListener( ),处理事件的接口是 ActionListener (1 分)
3、接口中的方法是 ActionPerformed(ActionEvent e) ,获得该事件的事件源的方法是 getSource( )(1 分)
4、当单击某项时,产生 HemEvent 事件,获得事件监视器的方法是 addHemListener( ) ,处理事件的接口是 HemListener (1 分)
5、接 口 中 的 方 法 是 itemStateChanged(HemEvent e) , 获 得 该 事 件 的 事 件 源 的 方 法 是getHemSelectable (1 分)

56、何设置组件的字体和颜色,

(1)设置字体 :用 Font 类创建一个字体对象,该对象表示一种字体 (1分)
通过组件对象名调用方法 SetFont(Font f),即可设置组件的字体 (1分)
(2)设置颜色 :用 Color 类创建两个颜色对象,表示两种颜色,一种颜色表示组件的前景色,
另一种表示背景色 ( 1 分)
通过组件对象名调用方法 SetBackground(Color C) 可设置组件的背景色 (1 分)
调用方法 SetForeground(Color C) 可设置组件的前景色 (1 分)

57、何在窗口中增加菜单 ?

用 MenuBar 创建一个对象,表示一个菜单条,使用 Fram 中的方法 SetMenuBar(MenuBar) ,
可在窗口中增加一个菜单条 ( 1 分)
用 Menu 创建若干个对象,每一个对象表示菜单条上的一个菜单项 (1分)
通过 MenuBar 的对象 add(Menu)将一个菜单加到菜单条上 (1 分)
用 MenuItem 创建若干对象,每一个对象表示一个具体的菜单项 (1分)
通过 Menu 对象调用方法 add(MenuItem) 可将一个菜单项加入到一个菜单中 (1 分)

58、如何处理菜单上的事件 ?

单击菜单项可产生 ActionEvent 事件 (1分)
处理该事件的接口是 Actionlistener (1 分)
接口中的方法是 actionPerformed(ActionEvent e) (1 分)
事件源获得监视器的方法是 addActionListener( ) (1 分)
ActionEvent 获得事件源的方法是 getSource( ) (1 分)

59、如何增加菜单分割线 ?如何产生复选菜单项 ?

通过 Menu 类的对象调用方法 addSeparator( ),可在当前菜单中增加一个分割线 (1 分)
用 CheckboxMenuItem 创建一个菜单项 (1 分)
通过 Menu 类的对象调用方法 add(CheckboxMenuItem) 将菜单项加入到菜单中,即可创建一个复选菜单项 ( 1分)

60、如何绘制封闭的多边形 ? 使用 Graphics 中的 drawpolygon(int xPoints[ ] ,int yPoints[ ] ,
int nPoints) 方法可绘制多边形 ( 1 分)
要绘制封闭的多边形, xPoints 和 yPoints 表示的第一点和最后一点必须相同 (1 分)

61、何处理 MouseMotionListener 接口事件 ?
鼠标移动事件有两种 :拖动鼠标和移动鼠标 (1 分)
产生的事件类型 MouseEvent (1 分)
获得监视器的方法是 addMouseMotionListener( ) (1分)
事件接口中的方法为 mouseDragged(MouseEvent e) (1 分)
和 mouseMoved(MouseEvent e) (1 分)

62、何处理键盘事件 ?
当按下, 释放或敲击键盘上一个键时, 就会产生事件 KeyEvent (1 分)
事件的接口为 KeyListener (1 分)
事件获得监视器的方法 addKeyListener( ) (1分)
事 件 的 处 理 方 法 有 三 个 , 分 别 是 keyPressed(KeyEvent e) , keyTyped(KeyEvent e) 和
keyReleased(KeyEvent e) (1 分)

63、用向量类的对象存储数据与用数组表示数据有什么区别 ?

(1)数组元素可以是任何类型的数据, 向量中的元素不能是基本数据类型的数据 (1 分)
(2)数组一旦用 new 运算符创建后,其大小不可以改变,向量对象的大小可根据元素的增加
自动增加 (1 分)

64、Java中多线程是如何调度的 ?

线程调度器负责线程的排队和处理器在线程间的分配 (1 分)
线程在优先级基础上依据 "先到先服务 "的原则,即相同优先级的线程按启动的先后顺序执
行, 高优先级线程先于低优先级运行 (1 分)

65、在 Applet 中如何播放声音 ?

使用 Applet 中的一个静态方法 newAudioClip(URL url ,String name) (1 分)
或 Applet 类的实例方法 :getAudioClip(URL url ,String name) (1 分)
可得一个音频 AudioClip 的对象,通过该对象调用方法 play( ) 可播放声音 (1 分)

66、线程中的方法 wait(), notify() 和 notifyAll() 的作用是什么 ?

(1)当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合
本线程的需要,则可以在同步方法中调用 wait() 方法,使本线程等待,并允许其它线程调用
这个同步方法 (1 分)
(2)其它线程在使用这个同步方法不需要等待,当它使用完这个同步方法时,用 notifyAll()
通知所有由于使用这个同步方法而处于等待的线程结束, 再次使用这个同步方法 (1 分)
(3)如果使第一个处于等待的线程结束等待, 则调用方法 notify() (1 分)

67、简述 Java 中打开与数据库连接的步骤 ?

(1)装载数据库驱动程序类 ( 1 分)
(2)调用 DriverManager 的方法 getConnection( ) ,并确定用于连接数据库的驱动程序, 数据库
文件名以及可选的用户 ID 和密码 (1分)

68、 JDBC 有哪几个主要任务 ?

(1)建立同数据库的连接 (1 分)
(2)发送 SQL 语句 (1 分)
(3)处理查询结果 (1 分)

69、创建一个 File 对象有哪几种构造方法 ?

(1)包含路径名的字符串 (1 分)
(2)含有路径名的字符串和含文件名的字符串 (1 分)
(3)一个代表路径的文件和一个含有文件名的字符串 (1 分)

70、 Java中的线程和多线程指的是什么 ?

(1)称程序中单个序列化的流控制为线程 (1 分)
(2)多线程指的是在一个程序中可定义多个线程并同时运行它们,每个线程可以执行不同的
任务 (1 分)

71、线程有哪些状态 ?它们是如何转换的 ?

线程在它的生命周期中有四种状态 :创建( 1 分)、运行( 1 分)、挂起( 1分)、结束( 1 分)

72、什么是同步机制 ?

(1)使共享对象将自己的成员方法定义为同步化方法 (1 分)
(2)通过调用同步化方法来执行单一线程 (1 分)
(3)其他线程不能同时调用一对象的同步化方法 (1 分)

73、简述向服务器发送信息的步骤 ?

(1)创建 URL 对象
(2)建立连接到 URL 对象的通道 (1 分)
(3)指定这个通道可输出 (1 分)
(4)指定通道所用的输出流 (1 分)
(5)向输出流写入数据 (1 分)
(6)关闭输出流 (1 分)

74、比较多线程与多任务的异同 ?

(1)多任务是针对操作系统而言的,表示操作系统可以同时执行多个程序 (1 分)
(2)多线程则是针对一个程序而言的,表示一个程序内部可以同时执行多个线程 (1 分)

75、向窗口添加菜单有哪几个步骤 ?
(1)生成菜单组件各个部分的对象 (1 分)
(2)进行菜单组装,即把菜单加到菜单条上,把菜单项加到菜单中 ( 1分)

76、创建线程有哪些方法 ?

(1)通过继承线程类 Thread 创建线程类 (1 分)
(2)建立一个实现 Runnable 接口的类来运行线程 (1 分)

77、简述 MouseEvent 类的主要方法 .

getX( ) (1 分)
getY( ) (1 分)
getModifiers( ) ( 1 分)
getClickCount( ) (1 分)
getSource( ) (1 分)

78、、对话框能独立存在吗 ?其默认布局是什么 ?

不能 (1 分)
其默认布局是 BorderLayout 布局 (1 分)

79、什么是继承?

答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法, 并把这种关
系称为继承,先定义的类称为父类,后定义的类称为子类,并且允许多层的继承关系
80、

81、

82、

83、

84、



85、

86、


87、 请写出 Java 语言中标识符的命名规则。

88、请写出 package 语句和 import 语句的区别。

89、.请写出与数组相比, Vccto 对象的特点。

90、 请写出用 Thread 类的子类创建线程并启动线程所包含的步骤。

91、请写出 Java 语言中的事件处理机制。

92、说出开发与运行 Java 程序的主要步骤。

答:安装 SUN 的 JDK,配置 classpath
编写源文件。
编译。
运行

93、如何区分应用程序和小应用程序。

答:应用程序必须在一类中定义一个 main()方法,该方法代表应用程序
94、

95、

96、

97、用 final 修饰符修饰的类和方法有什么特点?

用 final 修饰的类不能被继承,即不能有子类。 (2.5 分)
用 final 修饰的方法不能被重写 (2.5 分)

98、一个 Java Applet 的生命周期包括什么?

一个 Java Applet 的执行过程称为这个 Java Applet 的生命周期 (2 分)
一个完整的 Java Applet 所包含 5 个方法 init( ) 、start( ) (1 分)
stop( ) 、destroy( ) (1 分)
paint(Graphics g) (1 分)

99、Java 中多线程是如何调度的 ?

线程调度器负责线程的排队和处理器在线程间的分配 (2.5 分)
线程在优先级基础上依据 "先到先服务 "的原则 ,即相同优先级的线程按启动的先后顺序
执行 ,高优先级线程先于低优先级运行 (2.5 分)
100、

101、

102、
# 103、 简述 java 语言的特点 ? 1.2
Java 语言是目前使用最为广泛的网络编程语言之一 (1 分)
具有面向对象 (1 分)
与平台无关性 (1 分)
多线程性 (1 分)
动态性等特点 (1 分)

104、Java 中共有哪些基本数据类型? 2.2

基本类型共有 8 种,分四类分别是 (1 分)
逻辑型 (1 分)
字符型 (1 分)
整型 (1 分)
浮点型 (1 分)

105、Java 中数据类型分别用什么符号来表示的? 2.2

逻辑型用 boolean 表示 (1 分)
字符型用 char 表示 (1 分)
整型共有 4 种分别是 byte 、short 、long 、int (2 分)
浮点型共两种 float 和 double (1 分)

106、Java 中结构化程序设计有哪三种基本流程,及分别对应 java 中那些语句? 3.2

结构化程序设计有顺序、分支、循环三种基本流程 (2 分)
java 中的分支语句包括 if 语句、 switch 语句; (1 分)
循环语句包括 while 语句、 do-while 语句、 for 语句; (1 分)
其他如对象、变量定义语句、赋值语句、方法调用语句等都是顺序语句。

107、简述编程语言的几个发展阶段? 4.1

(1)面向机器语言 (1 分)
(2)面向过程语言 (1 分)
(3)结构化程序设计阶段 (1 分)
(4)面向对象编程 (2 分)

108、什么是方法重载? 4.2
方法重载是指,一个类中可以有多个方法具有相同的名字和类型( 2 分)
但这些方法的参数必须不同 (1 分)
或者是参数个数不同,或者是参数类型不同 (2 分)

109、什么是构造方法? 4.2

构造方法是一种特殊方法 (1 分)
它的名字必须与它所在的类的名字完全相同 (2 分)
并且不返回任何数据类型,即它是 void 型 (2 分)

110、简述什么是类的继承机制? 4.5

继承是一种由已有的类创建新类的机制 (1 分)
利用继承可以创建一个共有属性的一般类, 根据该一般类再创建具有特殊属性的
新类 (1 分)
新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行
为 (1 分)
由继承而得到的类称为子类 (1 分)
被继承的类称为父类 (1 分)

111、

112、21.已知整型变量 n,当 n 的值为 0 时,输出“正常”,否则输出“异常”。请写出使用 switch语句实现此功能的代码。

答 :

113、22.请写出在类、方法、变量之前加上修饰字 final 的作用

答 :

114、23.请列举出能产生 ActionEvent 事件类型的 3种组件。

答 :

115、24.某程序用以下代码弹出一个对话框:


如果程序中 anwser 的值等于 CLOSED_OPTION ,请写出用户对该对话框的操作内容。
答 :

116、25.请写出用矩形类 Rectangle2D 创建对象 r 的代码,对象 r 的左上角坐标是 (20 ,30) ,宽是 50,高是 70

答 :

117、

答 :

118、21.请写出表示以下条件的表达式:变量 x 的值为 1 与变量 y 的值为 2,有且只有一个成立。

答 :

119、22.请写出通过继承创建子类的作用。
答 :

120、23.请写出将文本区 text1 和 text2 放置于面板 P,并创建放置 P的滚动面板 jsp ,最后将jsp 添加到 JFrame 子窗口 myFrame的 Java 语句。
答 :

121、请写出 Java 小应用程序播放音频文件需要用到的类的类名,以及创建相应对象的方法。
答 :

122、25.请写出 Java 系统提供的支持文件随机访问的类的类名,以及该类提供的读取一个整数的方法
答 :

123、26.请写出 URL对象能实现的功能。
答 :

124、以下语句有一处错误,请改正,然后写出此循环语句的循环次数。

答 :

125、使用 super 有哪三种情况 ?
答 :

126、在 Java 的 GUI编程中,有哪三种窗口类型 ?

答 :

127、请写出向窗口增设菜单的步骤。

答 :

128、请写出绘制左上角为 (150,150),半径为 80 的绿色圆形的语句。设调用的对象是类型为 Graphics 的 g。

答 :

129、请写出使用 socket 与另一方进行通信会话的过程。

答 :

130、

答 :

131、22.请写出接口体中可能包含的内容。
答 :

132、23.请写出对事件对象作监视器注册的作用。
答 :

133、24.已知 Graphics 对象 g,获得 Graphics2D 对象 g2d,然后,用圆角长方形类创建对象 circle ,该对象的左上角坐标是 (30,40) ,半径是 50。请写出实现以上要求的 Java 代 码。
答 :

134、25.某程序希望用 FileFilter 类的子类为打开文件对话框设置文件筛选条件。 请写出设置 此筛选条件要使用的类及相应的方法。
答 :

135、26.JDBC 是 Java 程序与数据库连接的 API。请写出 JDBC能做的三件事情。
答 :

136、


答 :

137、为了系统安全,对 JavaApplet 小应用程序有什么限制 ?

答 :

138、请写出声明 int 类型的二维数组 intArr 的三种形式。

答 :

139、请写出在 JFrame 框架窗口对象中添加组件的步骤。

答 :

140、请写出使用 Graphics2D 类声明并创建一个左上角为 (20 ,30) 、边长为 50 的正方形对象 square 的语句。

答 :

141、请写出使用纯 Java JDBC 驱动程序连接数据库的步骤。

答 :

142、


答 :

143、22请写出final类、final方法和final变量各自的含义

答 :

144、

答 :

145、

答 :

146、25请写出sleep()和wait()的区别

答 :

147、

答 :

148、21请写出表示条件“y 右移一位后大于 3 并且 y 不等于 0”成立的 Java 表达式。
答 :

149、22. 请写出类之间的 is-a 关系和类之间的 has-a 关系的含义。
答 :

150、23. 请写出 GridLayout 布局的三种构造方法
答 :

# 151、24. 请写出使用 Graphics2D 类声明并创建一个左上角为 (30 ,40) ,宽是 80,高为 50 的椭圆对象 ellipse 的语句。

152、25. 请写出采用缓冲式输出时,程序由文件名创建缓冲式输出流的步骤。

153、26. 请写出数据库更新操作中,删除数据表记录的 3 种方案各自所使用的对象

154、


155、


156、32.阅读下列程序,请写出该程序的输出结果。

答 :

157、


158、

答 :

159、35.阅读下列程序,请写出该程序的功能。

答 :

160、

答 :

161、

答 :

162、


163、


164、


165、


答 :

166、


167、


168、 请编写方法 int countNum(String str) ,该方法的功能是统计已知字符串 str 中数字的个数。例如,
countNum(“A42B83C2D”) 的返回值是 5
答 :

169、. 一个小应用程序,界面如下图所示,其功能为实现摄氏温度和华氏温度的相互转换。以下是程序的大部分,
请编写其中的监视器方法。


答 :

170、


171、


172、


173、


174、


175、



176、

177、

178、


答 :

179、

180、



181、


答 :

182、


183、


184、


185、


186、



187、

188、



189、
阅读下列程序,请回答以下问题:
(1)该程序的菜单条中共有几个菜单项 ?
(2)单击哪个菜单项,可以打开一个对话框 ?
(3)该对话框是强制型还是非强制型 ?
(4)该对话框中显示的是什么内容 ?

Import javax.swing.*;import java.awt.*;
import java.awt.event.*; import java.util.*;
class MyDialog extends JDialog {MyDialog (JFrame F, String s) {super( F, s, false);  Date date = new Date() ;
String t = date.toString () ;  JLabel text = new JLabel (t);
add(text) ;  setSize(200,100);  setVisible(true);
}
}
public class MenuDemo extends JFrame implements ActionListener {JMenuBar menubar;  JMenu action;
JMenuItem show, set, quit;
public MenuDemo () {menubar = new JMenuBar () ;  setJMenuBar(menubar) ;
action = new JMenu ( ''操作 ''); menubar.add(action);
show= new JMenuItem (''显示 ''),  action.add(show);
set = new JMenuItem ("设置 ");  action.add(set);
action.addSeparator() ;  quit = new JMenuItem ( "退出 ");
action.add(quit);  show.addActionListener (this);
set.addActionListener (this);  quit.addActionListener ( this);
setSize(300,300);  setVisible(true);
}
public void actionPerformed (ActionEvent e ) {if(e.getSource() == show) {MyDialog diag = new MyDialog ( this, "信息 ");}
else if(e.getSource() == set) { this.setTitle ("菜单演示 ");}
else if(e.getSource() == quit ) {  System.exit(0);  }
}
public static void main (String[] args ) {new MenuDemo () ;}
}


190、

class InputNoNameDialog extends JDialog implements ActionListener{JLabel title ;JTextField textl ,text2, mainText;JButton done;
InputNoNameDialog(JFrame f  ,String s,JTextField t) {super(f,s, true); mainText = t ;Container con = getContentPane() ;
title=new JLabel(s) ; textl=new  JTextField(10) ;
text2=new JTextField(10) ; con.setLayout(new GridLayout(3,2)) ;
con.setSize(200,100); setModal(false) ;
//请在以下位置续写其余代码
答: done=new JButton(" 确定 ");
done.addActionListener(this);
con.add(title);con.add(done);
con.add(new JLabel(" 学号 "));con.add(textl);
con.add(new JLabel(" 姓名 "));con.add(text2);
setVisible(true); }
public void actionPerformed(ActionEvent e) {//输入结束按确定按钮后,将对话框中输入的学号和姓名在它依赖窗口的文本框中显示。
mainText.setText(″学号:″ +textl.getText()+ ″ 姓名:″ +text2.getText()) ;
setVisible(false) ;dispose();
}
}

191、阅读下列程序,请写出该程序的功能。

import javax.swing.*;  import java.awt.*; import java.awt.event.*;
滑动滚动条的滑块,
在文本框显示块 位
置对应的数值
class MyScrollBar extends JScrollBar {public MyScrollBar(int init, int len, int low, int high){super(JScrollBar.HORIZONTAL, init, len, low, high);
}
public Dimension getPreferredSize(){return new Dimension(125, 20);
}
}
class MyWindow extends JFrame implements AdjustmentListener{private JTextField  text;
MyWindow(String s){super(s);
MyScrollBar tempBar = new MyScrollBar(l0, 10, 0, 255);
Container con = this.getContentPane();
con.setLayout(new GridLayout(2,1));
this.setSize(250, 100);  this.setLocation(100, 100);
tempBar.addA djustmentListener(this);
text= new JTextField(" 移动滚动条的滑块 ",20);
con.add(text); con.add(tempBar);  this.setVisible(true);  this.pack();
}
public void adjustmentValueChanged(AdjustmentEvent e){MyScrollBar myBar=(MyScrO11Bar)e.getAdjustable() ;
text.setText("选择的值是: "+myBar.getValue()) ;
}
}
public class Test35 {public static void main(String[] args) { new MyWindow(" 滚动条示意程序 "); }
}

191、以下程序创建了一个窗口,然后在窗口内显示″ Hello ,World! ″。

import javax.swing.* ; import java .awt* ;
public class HelloWorld {public static void main(String[ ]ares) {TextFrame frame=new TextFrame() ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
frame. ____ setVisable(true)____;
}
}
class TextFrame extends JFrame {public TextFrame()  { .
setTitle(″HelloWorld ″);
setSize(WIDTH ,HEIGHT) ;
TextPanel panel=new TextPanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int WIDTH=300 ;
public static final int HEIGHT= 200 ;
}
class TextPanel extends JPanel {public void paintComponent(Graphics g)  {super. ___ paintComponent(g) _____;
g.drawString( ″Hello ,World! ″, x,y);
}
public int x=100 ; public int y=100 ;
}

192、阅读下列程序,请写出该程序的功能。

import java.applet.* :import java.awt.event.* ;import javax.swing.*
public class Class 1 extends Applet implements KeyListener{JButton button=new JButton( ″开始″ );
JTextArea text=new JTextArea(5 ,20);
public void init() {button.addKeyListener(this) ; add(button);add(text) ;
}
public void keyPressed(KeyEvent e){int t=e.getKeyCode() ;
if(t>=KeyEvent.VK_A&& t<=KeyEvent.VK_Z) {text.append(″ ″+(char)t);
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}

193、

194、某小应用程序的界面有两个按钮, 点击 “画圆 ”按钮, 程序在窗口画一个圆, 点击 “画矩形 ”按钮,程序在窗口画一个矩形。

import java.applet.*;  import java.awt.*;
import java.awt.event.*;import javax.swing.*;
public class Classl extends Applet implements ActionListener {boolean c = false; int r = 50,a = 50, b = 50;
JButton bl, b2;
public void init(){setSize(200, 200);  setBackground(Color.blue);
b1 = new JButton(" 画 圆"); b2 = new JButton(" 画矩形 ");
b1.addActionListener(this);  b2.addActionListener(this);
add(b1);  add(b2); setVisible(true);
}
public void  (Graphics g){g.clearRect(70, 100, 130, 200);
g.setColor(Color. red);
if(c)  g.drawRoundRect(70, 100, r, r, r, r);
else  g.drawRect(70, 100, a, b);
}
public void update(Graphics g){  paint(g);  }
public void actionPerformed(ActionEvent e){if(e.getSource()==b1) { c = true;  }
else if(e.getSource()==b2){  c = false; }
;
}
}

195、阅读下列程序,请写出该程序的功能。

import java.applet.*; import javax.swing.*;
import java.awt.*;  import java.awt.event.*;
public class Test34 extends Applet implements ActionListener {JTextField text;int r; JPanel panel;
public void paint (Graphics g){Graphics gc = panel.getGraphics () ;
gc.clearRect(0,0, panel.getWidth() , panel.getHeight());
gc.setColor(Color.red); gc.fillOval ( 10, 10, r, r);
}
public void init () {text = new JTextField (10);  panel = new JPanel() ;
setSize(200, 100) ;  setLayout(new GridLayout (2,1)) ;
add(text); add(panel);  text.addActionListener (this);
}
public void actionPerformed (ActionEvent e ) {if ( e.getSource() == text) {r = Integer.parseInt(text.getText());
repaint() ;
}
}
}

196、阅读下列程序,请写出该程序的功能。

import java.applet.* ; import java.awt.* ;
public class Test36 extends java.applet.Applet implements Runnable{Thread myThread = null ;
double seta=0.0;
public void start() {setSize(500,400);
if(myThread=null){  myThread=new Thread(this) ; myThread.start() ;}
}
public void run() {while(myThread!=null) {try {myThread.sleep(40) ;
} catch(InterruptedException e){}
seta+=3.0; if(seta>=360)seta=0; repaint();
}
}
public void paint(Graphics g) {final double pi=3.14159 ; final double r = 100.0 ;
int x0=250+(int)(r*Math.cos(3.1415926/180.0*seta)) ;
int y0=200+(int)(r*Math.sin(3.1415926/180.0*seta)) ;
g.setColor(Color.red) ; g.drawOval(x0 ,y0,10,10);
}
以 文 本 框 输 入 的
数 字 为 半 径 ,( 1
分)以( 10, 10)
为左上角,(1 分)
填充一个红色( 1
分)的圆。(1 分)
}

答:红色、顺时针画圆

197、


198、阅读下列程序,请写出该程序的功能。

import java.applet.*;  import java.awt.*;
public class Class1 extends java.applet.Applet implements Runnable {Thread myThread = null;
public void start() {setSize(500, 400);
if (myThread == null) {myThread = new Thread(this);  myThread.start();
}
}
public void run() {while (myThread != null) {try { myThread.sleep(500);
} catch (InterruptedException e) { }
repaint();
}
}
public void paint(Graphics g) {int x = (int)(400*Math.random());
int y = (int)(300*Math.random());
g.setColor(Color.red);  g.fillOval(x,y, 10, 10);
}
}

随机绘制外切矩形为 10 红色的圆
199、

198、阅读下列程序,请写出该程序的功能。

import java util.*;
class MyThread extends Thread {int pauseTime; String name;
public MyThread (int x, String n) { pauseTime = x;  name = n; }
public void run() {for(int i = 1;i <= 4; i++) {try {Current thread(1 分 )
After name change(1 分)
3
2
1(2 分)
System.out.println(name +":" +new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
}catch(Exception e){ }
}
}
}
public class Test36{static public void main(String[] args) {MyThread thread1 = new MyThread (1000,"Fast Thread"); thread 1 .start();
MyThread thread2 = new MyThread (3000,"Slow Thread"); thread2.start();
}


199、

200、

201、


202、


203、


204、


205、


206、

207、21.请写出表示以下条件的表达式:变量 x 的值为 1 与变量 y 的值为 2,有且只有一个成立。

208、22.请写出通过继承创建子类的作用。

209、23.请写出将文本区 text1 和 text2 放置于面板 P,并创建放置 P的滚动面板 jsp,最后将jsp 添加到 JFrame子窗口 myFrame 的 Java语句。

210、24. 请写出 Java小应用程序播放音频文件需要用到的类的类名,以及创建相应对象的方法

211、25.请写出 Java系统提供的支持文件随机访问的类的类名,以及该类提供的读取一个整数的方法。

212、26.请写出 URL对象能实现的功能。

213、

214、

215、

216、

217、30.类 ShareDataManager 用于管理多个线程共享数据 data,其中定义了一个供线程修改 data 的方法 modiData() 。为了
对 data 的修改操作保持完整,多线程在 data上的操作 有互斥要求;另外,限制线程对 data的修改不能让 data为负
数,所以多线程在 data 上的操作还有同步要求。以下是类 ShareDataManager 的定义

218、31.某个缓冲式输出的示意程序的界面有一个文本框 fileOut 和一个文本区 text,程序运 行时, 先在文本区中输入要存入文件的内容,接着在文本框中输入文件名并回车, 则程序将文本区中的内容保存到指定的文件中。以下是该程序中相应文本框文件名 的输入事件的方法

219、

220、


221、




222、



223、



224、


225、

226、

227、

228、

229、什么是继承?

答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类,并
且允许多层的继承关系。

230、

231、

232、





233、

234、

235、

236、

237、

238、


239、

240、阅读下列程序,请写出该程序的输出结果。

class Tree {private String name;public boolean flower;
public int birthYear;
Tree(String n, boolean f, int y){ name = n; flower = f; birthYear = y; }
public void setName(String n){name = n;}
public String getName(){return name; }
public void printTree(String str){System.out.println(str); System.out.println("Name:"+name);
System.out.println("Birth Year:"+birthYear);
System.out.println("Flower:"+flower);
}
}
class PineTree extends Tree {public boolean coniferous = true;
PineTree(String n, boolean f, int y, boolean c){super(n, f, y);coniferous = c; }
public void printTree(String str){super, printTree(str);
System.out.println("Coniferous:" + coniferous);
}
}
class Test32 {public static void main(String []args){Tree fOb = new Tree("May Flower", true, 1980);
PineTree sOb = new PineTree("Pine", false, 2000, true);
fOb.printTree(" fOb:"); sOb.printTree("sOb:");
}
}

参考答案: fOb:

Name:May Flower
Birth Year:1980
Flower:true
sOb:
Name:Pine
Birth Year:2000
Flower:false
Coniferous:true

241、阅读下列程序,请写出该程序的功能。

import java.applet.*; import javax.swing.*;
import java.awt.*; import java.awt.event.*;
public class Test34 extends Applet implements ActionListener {JTextField text;int r; JPanel panel;
public void paint(Graphics g){Graphics gc = panel.getGraphics();
gc.clearRect(0,0, panel.getWidth(), panel.getHeight());
gc.setColor(Color.red); gc.fillOval(10, 10, r, r);
}
public void init() {text = new JTextField(10); panel = new JPanel();
setSize(200, 100); setLayout(new GridLayout(2,1));
add(text); add(panel); text.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {if (e.getSource() == text) {r = Integer.parseInt(text.getText());
repaint();
}
}
}

参考答案:以文本框输入的数字为半径,以( 10,10)为左上角,填充一个红色的圆。
242、阅读下列程序,请回答以下问题:
(1) 该程序的菜单条中共有几个菜单项 ?
(2) 单击哪个菜单项,可以打开一个对话框 ?
(3) 该对话框是强制型还是非强制型 ?
(4) 该对话框中显示的是什么内容 ?

Import javax.swing.*;import java.awt.*;
import java.awt.event.*; import java.util.*;
class MyDialog extends JDialog {MyDialog(JFrame F, String s) {super(F, s, false); Date date = new Date();
String t = date.toString(); JLabel text = new JLabel(t);
add(text); setSize(200,100); setVisible(true);
}
}
public class MenuDemo extends JFrame implements ActionListener {JMenuBar menubar; JMenu action;
JMenuItem show, set, quit;
public MenuDemo() {menubar = new JMenuBar(); setJMenuBar(menubar);
action = new JMenu('' 操作 '') ; menubar.add(action);
show= new JMenuItem('' 显示 ''), action.add(show);
set = new JMenuItem(" 设置 "); action.add(set);
action.addSeparator(); quit = new JMenuItem(" 退出 ");
action.add(quit); show.addActionListener(this);
set.addActionListener(this); quit.addActionListener(this);
setSize(300,300); setVisible(true);
}
public void actionPerformed(ActionEvent e) {if(e.getSource() == show) {MyDialog diag = new MyDialog(this, " 信息 ");}
else if(e.getSource()== set) { this.setTitle(" 菜单演示 ");}
else if(e.getSource() == quit){ System.exit(0); }
}
public static void main(String[] args) {new MenuDemo();}
}

参考答案:

( 1)3 个菜单项
(2)“显示”菜单项
(3)非强制型对话框
(4)显示当前事件

243、

class CurrentThreadDemo {public static void main(String args[]) {Thread t = new Thread(); System.out.println("Current thread");
t.setName("My Thread"); System.out.println("After name change");
try {for(int n = 3; n > 0; n--) {System.out.println(n); Thread.sleep(1000);
}
} catch (InterruptedException e) {System.out.println("Main thread interrupted");
}
}
}

参考答案: urrent thread(1 分)
After name change(1 分)
3
2
1(2 分
244、

245、

246、


247、

248、

249、请设计实现如下用于输入学号和姓名的对话框界面, 其中空白格是文本框, 用于输入相应的内容。


250、

251、多线程有什么⽤?

1)发挥多核CPU的优势
随着⼯业的进步,现在的笔记本、台式机乃⾄商⽤的应⽤服务器⾄少也都是双核的,4核、8核甚⾄16核的也都不少⻅,如果是单
线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。 单核CPU上所谓的"多线程"那是假的多线程,同⼀
时间处理器只会处理⼀段逻辑,只不过线程之间切换得⽐较快,看着像多个线程"同时"运⾏罢了。多核CPU上的多线程才是真正
的多线程,它能让你的多段逻辑同时⼯作,多线程,可以真正发挥出多核CPU的优势来,达到充分利⽤CPU的⽬的。
2)防⽌阻塞
从程序运⾏效率的⻆度来看,单核CPU不但不会发挥出多线程的优势,反⽽会因为在单核CPU上运⾏多线程导致线程上下⽂的切
换,⽽降低程序整体的效率。但是单核CPU我们还是要应⽤多线程,就是为了防⽌阻塞。试想,如果单核CPU使⽤单线程,那么
只要这个线程阻塞了,⽐⽅说远程读取某个数据吧,对端迟迟未返回⼜没有设置超时时间,那么你的整个程序在数据返回回来之
前就停⽌运⾏了。多线程可以防⽌这个问题,多条线程同时运⾏,哪怕⼀条线程的代码执⾏读取数据阻塞,也不会影响其它任务
的执⾏。
3)便于建模
这是另外⼀个没有这么明显的优点了。假设有⼀个⼤的任务A,单线程编程,那么就要考虑很多,建⽴整个程序模型⽐较⿇烦。
但是如果把这个⼤的任务A分解成⼏个⼩任务,任务B、任务C、任务D,分别建⽴程序模型,并通过多线程分别运⾏这⼏个任
务,那就简单很多了。

创建线程的方式

⽐较常⻅的⼀个问题了,⼀般就是两种:
1)继承Thread类
2)实现Runnable接⼝
⾄于哪个好,不⽤说肯定是后者好,因为实现接⼝的⽅式⽐继承类的⽅式更灵活,也能减少程序之间的耦合度, ⾯向接⼝编程也
是设计模式6⼤原则的核⼼。

3、start()⽅法和run()⽅法的区别

只有调⽤了start()⽅法,才会表现出多线程的特性,不同线程的run()⽅法⾥⾯的代码交替执⾏。如果只是调⽤run()⽅法,那么
代码还是同步执⾏的,必须等待⼀个线程的run()⽅法⾥⾯的代码全部执⾏完毕之后,另外⼀个线程才可以执⾏其run()⽅法⾥⾯
的代码。

4、Runnable接⼝和Callable接⼝的区别

有点深的问题了,也看出⼀个Java程序员学习知识的⼴度。
Runnable接⼝中的run()⽅法的返回值是void,它做的事情只是纯粹地去执⾏run()⽅法中的代码⽽已;Callable接⼝中的call()
⽅法是有返回值的,是一个泛型,和Future、FutureTask配合可以⽤来获取异步执⾏的结果。
这其实是很有⽤的⼀个特性,因为 多线程相比单线程更难、更复杂的一个重要原因就是因为多线程充满着未知性,某条线程是否
执行了?某条线程执⾏了多久?某条线程执⾏的时候我们期望的数据是否已经赋值完毕?⽆法得知,我们能做的只是等待这条多
线程的任务执行完毕而已。而Callable+Future/FutureTask却可以获取多线程运行的结果,可以在等待时间太⻓没获取到需要的
数据的情况下取消该线程的任务,真的是⾮常有⽤。

CyclicBarrier和CountDownLatch的区别

两个看上去有点像的类,都在java.util.concurrent下,都可以用来表示代码运行到某个点上,二者的区别在于:
1)CyclicBarrier的某个线程运行到某个点上之后,该线程即停⽌运⾏,直到所有的线程都到达了这个点,所有线程才重新运
⾏;CountDownLatch则不是,某线程运行到某个点上之后,只是给某个数值-1而已,该线程继续运行。
2)CyclicBarrier只能唤起一个任务,CountDownLatch可以唤起多个任务。
3) CyclicBarrier可重用,CountDownLatch不可重⽤,计数值为0该CountDownLatch就不可再⽤了。

什么是线程安全

最好的: 如果你的代码在多线程下执行和在单线程下
执行永远都能获得一样的结果,那么你的代码就是线程安全的。

这个问题有值得⼀提的地⽅,就是线程安全也是有⼏个级别的:
1)不可变
像String、Integer、Long这些,都是final类型的类,任何⼀个线程都改变不了它们的值,要改变除⾮新创建⼀个,因此这些不
可变对象不需要任何同步⼿段就可以直接在多线程环境下使⽤
2)绝对线程安全
不管运⾏时环境如何,调⽤者都不需要额外的同步措施。要做到这⼀点通常需要付出许多额外的代价,Java中标注⾃⼰是线程安
全的类,实际上绝⼤多数都不是线程安全的,不过绝对线程安全的类,Java中也有,比如说CopyOnWriteArrayList、
CopyOnWriteArraySet
3)相对线程安全
相对线程安全也就是我们通常意义上所说的线程安全,像Vector这种,add、remove⽅法都是原⼦操作,不会被打断,但也仅
限于此,如果有个线程在遍历某个Vector、有个线程同时在add这个Vector,99%的情况下都会出现
ConcurrentModificationException,也就是 fail-fast机制。
4)线程非安全
这个就没什么好说的了,ArrayList、LinkedList、HashMap等都是线程⾮安全的类

Java中如何获取到线程dump文件

死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump也就是线程堆栈,获取到线
程堆栈有两步:
1)获取到线程的pid,可以通过使用jps命令,在Linux环境下还可以使⽤ps -ef | grep java
2)打印线程堆栈,可以通过使用jstack pid命令,在Linux环境下还可以使用kill -3 pid
另外提提点,Thread类提供了一个getStackTrace()用法也可以⽤于获取线程堆栈。这是一个实例用法,因此此⽅法是和具体线
程实例绑定的,每次获取获取到的是具体某个线程当前运⾏的堆栈。

一个线程如果出现了运行时异常会怎么样

如果这个异常没有被捕获的话,这个线程就停⽌执⾏了。另外重要的一点是: 如果这个线程持有某个某个对象的监视器,那么这
个对象监视器会被立即释放

如何在两个线程之间共享数据

通过在线程之间共享对象就可以了,然后通过wait/notify/notifyAll、await/signal/signalAll进⾏唤起和等待,比如说阻塞队列
BlockingQueue就是为线程之间共享数据⽽设计的









Java语言程序设计(一)简答题和论述题相关推荐

  1. 数据库系统原理简答题、论述题、判断题

    简答题 1.数据库管理系统的主要功能有哪些 ? 答:数据库定义.操纵.保护.存储.维护和数据字典. 2.数据库系统中的常见故障有哪些 ? 答: .事务故障,系统故障.介质故障. 3.简述 SQL 语言 ...

  2. 租船题库整理 - 简答题、论述题

    四.简答题 航次租船合同的种类有哪些? 参考答案: 单航次租船(single trip charter),指出租人和承租人只洽租一个单程航次,将货物从一港运至另一港的租船方式. 往返航次(return ...

  3. 00900网页设计与制作简答题和论述题

    文章目录 什么是DHTML?DHTML的组成部分及其功能?DHTML的主要优点有哪些?分别予以说明.使用DHTML的原因? 试论述HTML和DHTML的区别 XML最主要的特点? 简述web浏览器的含 ...

  4. 数据结构简答题和论述题

    1.试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别. [解答]数据结构是指相互之间存在一定关系的数据元素的集合. 而 抽象数据类型是指一个数据结构以及定义在该结构上的一组操作. ...

  5. 操作系统简答题和论述题

    1.操作系统设计原则 A. 能使计算机系统使用方便 B. 能使计算机高效的工作 2.操作系统功能: 处理器管理(处理器的调度): 存储管理(对主存管理) : 文件管理(面向用户实现按名存取,存储.检索 ...

  6. 2018年10月自考java_请注意!2018年自考《Java语言程序设计(一)》课程全国统一命题考试...

    为组织好高等教育自学考试<Java语言程序设计(一)>课程的全国统一考试命题工作,根据全国统一命题课程的有关规定,特制定本说明. 一.考试原则 1.考试标准 本课程考试参照全日制普通高校同 ...

  7. 2012年1月java_全国2012年1月自考Java语言程序设计(一)试题及答案.doc

    全国2012年1月自考Java语言程序设计(一)试题及答案 全国2012年10月自考Java语言程序设计(一)试题 课程代码:04747 选择题部分 一.单项选择题 本大题共10小题,每小题1分,共1 ...

  8. 2014年4月java程序设计,2014年4月 Java语言程序设计(一)试题答案.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 2014年4月 Java语言程序设计(一)试题答案.d ...

  9. java语言的命题原则_重庆自考《Java语言程序设计(一)》课程全国统一命题考试说明...

    为组织好高等教育自学考试<Java语言程序设计(一)>课程的全国统一考试命题工作,根据全国统一命题课程的有关规定,特制定本说明. 一.考试原则 1.考试标准 本课程考试参照全日制普通高校同 ...

最新文章

  1. 网络安全工具:Wireshark
  2. Windows安装Pytorch/torchvision
  3. sqldeveloper 连接oracle时 ora-12505 错误
  4. 平衡二叉查找树 AVL 的实现
  5. Python爬虫-利用代理IP访问网页(requests)
  6. com+ system application 启动_dubbo启动引导过程(基于2.7.9)
  7. Linux zip命令:压缩文件或目录
  8. 安装eclipse的android adt 插件,eclipse安装ADT插件
  9. 设置X轴,y轴分格线,使用对象句柄完成
  10. STM32——HAL版——定时器ms和us延时函数
  11. java集合框架图(详细版)
  12. 好用的医药管理软件都有哪些特点
  13. 机架服务器如何使用无线网卡,软路由加装老旧无线网卡
  14. b站java开发好的up主_B站有哪些不错的UP主?
  15. 记录一次redmibook pro15声卡驱动相关问题
  16. linux sniffer 程序使用,Linux下Sniffer程序的实现
  17. Aho - Corasick string matching algorithm
  18. 干货!如何快速拥有自己的商城APP
  19. 上海大学计算机工程与科学学院研究生导师,上海大学计算机工程与科学学院硕士生导师刘方方...
  20. 微信文件传输助手文件存储位置问题

热门文章

  1. java 合并csv_用java将三个csv表格文件,整合数据组合成一个文件。
  2. 计算机组成原理实用教程第3版课后答案,计算机组成原理实用教程课后习题答案.docx...
  3. 安装pattern出错mysql_config not found
  4. 小说中人称转换作用_小说创作的最重要的几个要数!
  5. python生成图片链接_python如何将两张图片生成为全景图片
  6. 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画
  7. Linux 基金会发布 2017 最佳 Linux 发行名单
  8. C# Using 用法
  9. 强大的网页性能测试工具--Speed Tracer
  10. moosefs-1.6.10 安装手记