java考试

如题所述

复习题
1、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
2、线程的基本概念、线程的基本状态以及状态之间的关系
答:线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。
Java中的线程有四种状态分别是:运行、就绪、挂起、结束
3、sleep() 和 wait() 有什么区别?
答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:不能,一个对象的一个synchronized方法只能由一个线程访问。
5、Thread和Runnable有什么不同?
JAVA线程控制着程序执行的主路径。当你用java命令调用JVM时,JVM创建了一个隐式线程来执行main方法。Thread类提供了主线程调用其它线程并行运行的机制。
Runnable接口定义了一个能被Thread运行的类。实现Runnable的类只需要实行run方法。可以很灵活的扩展现在的已经继承自其它父类的类。而thread则不可以,因为java只允许继承一个父类。
6、启动一个线程是用run()还是start()?
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
7、请说出你所知道的线程同步的方法。
答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

8、在Java中允许创建多线程应用程序的接口是()。
【A】Threadable 【B】Runnable
【C】Clonable 【D】以上均不是
【解析】A
9、在JAVA编程中,实现Runnable接口时必须实现的方法是()。
【A】wait() 【B】run()
【C】stop() 【D】start()
【解析】B
10、JAVA线程编程中,如果让线程睡眠,可以用()方法实现。
【A】start() 【B】close();
【C】setDaemon(); 【D】sleep();
【解析】D
11、编译运行下面的代码会发生什么
public class Test extends Thread {
private String sThreadName;
public static void main(String args[]) {
Test h = new Test();
h.go();
}
Test() {
}
Test(String s) {
sThreadName = s;
}
public String getThreadName() {
return sThreadName;
}
public void go() {
Test first = new Test("first");
first.start();
Test second = new Test("second");
second.start();
}
public void start() {
for (int i = 0; i < 2; i++) {
System.out.println(getThreadName() + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
}
【A】编译错误
【B】输出first0, second0, first1, second1
【C】输出first0, first1, second0, second1
【D】运行时错误
答案:C。
12、编译运行下面的代码会发生什么
public class Test {
public static void main(String argv[]) {
Pmcraven pm1 = new Pmcraven("one");
pm1.run();
Pmcraven pm2 = new Pmcraven("two");
pm2.run();
}
}
class Pmcraven extends Thread {
private String sTname = "";
Pmcraven(String s) {
sTname = s;
}
public void run() {
for (int i = 0; i < 2; i++) {
try {
sleep(1000);
} catch (InterruptedException e) {
}
yield();
System.out.println(sTname);
}
}
}
【A】编译错误 【B】输出One One Two Two
【C】输出One Two One Two 【D】输出One Two One Two
答案B
13、一个完整的URL地址由哪几部分组成?
答:一个完整的URL由4部分组成:资源类型、存放资源的主机域名、资源文件名和端口。
其中:资源类型:指服务协议类型,如Web服务器的http协议。
主机域名:一般给出服务器主机的名称或IP号。
资源文件名:给出要查询的文件的相对路径以及名称。
端口:服务器的整型端口号,通常只有使用非标准端口时才指定。
例如:http://192.168.1.220:80/index.html
其中:http是服务器采用http协议、“192.168.1.220”是服务器的IP号、“index.html”服务器的根位置文件index.html、80为端口号。
14、建立Socket对象和ServerSocket对象的工作步骤分别是那些。
书籍P38-39
15、套接字包括( )
【A】端口号 【B】IP地址
【C】端口号和IP地址 【D】都不是
答案C
16、等待客户端请求连接,服务器可以使用的类是( )
【A】Socket 【B】ServerSocket
【C】Server 【D】URL
答案B
17、ServerSocket的accept()方法返回的对象类型是( )
【A】Socket 【B】ServerSocket
【C】Server 【D】URL
答案A
18、用来封装计算机IP地址和域名的类是( )
【A】Socket 【B】InetAddress
【C】URLConnection 【D】URL
答案A
19、Java中的事件处理机制?
答:事件从事件源到监听者的传递是通过对目标监听者对象的Java 方法调用进行的。对每个明确的事件的发生,都相应地定义一个明确的Java 方法。这些方法都集中定义在事件监听者接口(EventListener Interface)中,这个接口要继承java.util.EventListener。实现了事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,相应的状态通常都封装在事件状态对象(Event State Object)中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监听者不能直接实现事件监听者接口,或者还有其它的额外动作时,就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例,来建立它们之间的联系。
20、简述适配器和监听接口的区别。

21、下面( )方法用于获得事件源。
【A】getEvent() 【B】getCommand()
【C】getText() 【D】getSource()
答案D
22、下述代码中,如果单击“TEST”按钮,标准输出的消息是( )
public class Exercise extends JFrame{
public Exercise(){
super("事件测试");
Button b=new Button("TEST ");
b.addMouseListener(new Tester());
this.add(b);
this.setSize(200,150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class Tester implements MouseListener{
public void actionPerformed(ActionEvent e){
System.out.println("按钮发生动作");
}
public void mouseClicked(MouseEvent e){
System.out.println("按钮被单击");
}
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
}
【A】"按钮发生动作" 【B】"按钮被单击"
【C】"按钮发生动作"和"按钮被单击" 【D】以上都不对
答案B
23、试描述创建一个菜单的步骤。
书籍P95
24、简述实现一个JDialog对话框的步骤。
书籍P104
25、在正则表达式中,( )符号用于匹配单个字符。
【A】. 【B】?
【C】* 【D】+
答案B
26、下面( )符号用于匹配一次或多次。
【A】. 【B】?
【C】* 【D】+
答案D
27、下述正则表达式为:
(\d{1,3}\.){3}\d{1,3}
给出正则表达式描述的匹配字符( )。
注:\d 匹配数字字符(0~9);{n}匹配确定的n次,n是一个非负整数
{n,m}最少匹配n次且最多匹配m次,m和n均为非负整数,其中n≤m
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-27
不过
相似回答