java考试
发布时间:2025-05-20 15:17:00 发布人:远客网络
一、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中允许创建多线程应用程序的接口是()。
9、在JAVA编程中,实现Runnable接口时必须实现的方法是()。
10、JAVA线程编程中,如果让线程睡眠,可以用()方法实现。
【C】setDaemon();【D】sleep();
11、编译运行下面的代码会发生什么
public class Test extends Thread{
public static void main(String args[]){
public String getThreadName(){
Test first= new Test("first");
Test second= new Test("second");
System.out.println(getThreadName()+ i);
} catch(InterruptedException e){
System.out.println(e.getMessage());
【B】输出first0, second0, first1, second1
【C】输出first0, first1, second0, second1
12、编译运行下面的代码会发生什么
public static void main(String argv[]){
Pmcraven pm1= new Pmcraven("one");
Pmcraven pm2= new Pmcraven("two");
class Pmcraven extends Thread{
} catch(InterruptedException e){
【A】编译错误【B】输出One One Two Two
【C】输出One Two One Two【D】输出One Two One Two
13、一个完整的URL地址由哪几部分组成?
答:一个完整的URL由4部分组成:资源类型、存放资源的主机域名、资源文件名和端口。
其中:资源类型:指服务协议类型,如Web服务器的http协议。
主机域名:一般给出服务器主机的名称或IP号。
资源文件名:给出要查询的文件的相对路径以及名称。
端口:服务器的整型端口号,通常只有使用非标准端口时才指定。
例如:
其中:http是服务器采用http协议、“192.168.1.220”是服务器的IP号、“index.html”服务器的根位置文件index.html、80为端口号。
14、建立Socket对象和ServerSocket对象的工作步骤分别是那些。
【C】端口号和IP地址【D】都不是
16、等待客户端请求连接,服务器可以使用的类是()
17、ServerSocket的accept()方法返回的对象类型是()
18、用来封装计算机IP地址和域名的类是()
答:事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者接口(EventListener Interface)中,这个接口要继承java.util.EventListener。实现了事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,相应的状态通常都封装在事件状态对象(Event State Object)中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监听者不能直接实现事件监听者接口,或者还有其它的额外动作时,就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例,来建立它们之间的联系。
20、简述适配器和监听接口的区别。
21、下面()方法用于获得事件源。
【A】getEvent()【B】getCommand()
【C】getText()【D】getSource()
22、下述代码中,如果单击“TEST”按钮,标准输出的消息是()
public class Exercise extends JFrame{
b.addMouseListener(new Tester());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
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】以上都不对
23、试描述创建一个菜单的步骤。
24、简述实现一个JDialog对话框的步骤。
25、在正则表达式中,()符号用于匹配单个字符。
26、下面()符号用于匹配一次或多次。
(\d{1,3}\.){3}\d{1,3}
给出正则表达式描述的匹配字符()。
注:\d匹配数字字符(0~9);{n}匹配确定的n次,n是一个非负整数
{n,m}最少匹配n次且最多匹配m次,m和n均为非负整数,其中n≤m
二、java 题(考试了)
1.运行Java字节码的假想计算机称为JVM(Java虚拟机)。
2. Java程序分为两种类型,分别是java application(java应用程序,可独立运行)和java applet(java小应用程序,不能独立运行)。
3.开发工具JDK中的Javac(Java编译器)的作用是将Java源文件编译为Java字节码文件。
4.在Java语言中,short数据类型的存储开销是16字节,而long数据类型的存储开销是64位。
5. Java语言的继承机制是单一继承,使用接口作为多重继承的替代物。
6.对类中成员的访问,Java提供了四个不同的访问范围,分别是public、protected、private
7.子类和父类中覆盖的方法,要具有相同的方法名、相同的参数类型和相同的返回值类型。
8.将Applet小应用程序嵌入到HTML文件中,要用<applet></applet>标记,其中它还有三个基本参数,分别是 code、width和height。
9.如果x= 2,y= 5,z= 6;则 u= x> y?( x> z? x: y):( y> z? y:( z> x? z: x));则u=6。
10.在Java中,所有的异常类都是Throwable类的子类,该类有两个最基本的子类分别是Error和Exception。
11.异常处理的基本结构分为三部分,每部分的关键字分别是try、catch和finally。
12.Java采用抢占式调度方式,即高优先级线程具有剥夺低优先级线程执行的权利。
13.创建新线程的两种方法是继承Thread类重写run()方法和实现Runnable接口。
14.若有int i= 2,b= 0;表达式b=(++i)+(++i)+(++i)的值是12。
二.单项选择题(本大题共20小题,每小题1分,共20分)
1.下列标识符中,合法的标识符是( B)。
A. goto B. final C. 9stud D. student2
2. int m,n=3; m=++n;执行完成这两行代码后,则( C)。
A. m=3,n=4 B. m=3,n=3 C. m=4,n=4 D.以上都不是
3. int a[][]=new int[2][3];选择正确的答案( B)。
A.a.length=3 B.a.length=2 C.a.length=6 D.a.length的值不能确定
4.在设计Application程序时,设main()方法的参数是args,则用( C)可以获得命令行参数的个数。
A.args[0].length B.args[0].length() C.args.length D.args.length()
5.要求某成员变量访问权限局限于同一类,则应该使用( D)。
A.public B. protected C.确省 D. private
6.当用户最小化包含Applet的窗口时,将执行Applet的( D)方法。
A.init() B. start() C. stop() D. destroy()
7.以下哪组修饰符不能同时修饰一个方法( D)
A. abstract public B. public final C. public static D. abstract private
8.编写Applet程序时,所定义的类必须是(C)的子类。
A. Window B. Panel C. Applet D. Frame
9.Java编程所必须的默认引用包为( B)
A. java.sys包 B. java.lang包 C. java.new包 D.以上都不是
10.如果需要按add()语句的顺序依次放置部件,则需要使用(A)布置管理器。
A. FlowLayout B. BorderLayout C. CardLayout D. GridLayout
三、JAVA考试题
1、请问”2”、’2’、2之间有什么不同?并回答下面程序的输出结果是什么?(提示:‘2’的ASCII码值是50)(8分)
答:"2"是字符串,'2'算字符。2是数字。
public static void main(String[] args)
2、你认为java、C、C++他们之间有没有联系和区别?和C、C++相比,java有哪些优点?(10分)
答:java是以c及c++为基础的。许多地方沿用了它们的思想。但最主要的,java是完全面向对象的编程,而c是面向过程,c+则不完全是面向对象。java相对说来,编程更方便,安全,结构,模块化强,易于移植,跨平台性好等。
3、下面两段代码具有多处错误,请找出你认为错误的地方,作上标记,并说明为何出错。如果你认为该行没有错误,请打上√(12分)
i)public int search(int错[10] number) 1、引用时只能是类型不能带值{
number错= new int[10]; 2、数组没有下标
for(int i=0;i<number.length;i++) 3、对
number[i]=number[i-1]+number[i+1]错; 4、数组在i+1在i=number.length-1是超界
private void myMethodOne(int a)
public static void main(String[] args)
MyClassOne w1=new MyClassOne();
w1.A=12; 6、错误,试图给final型再次赋值
w1.b=12; 7、对Myclassone中b赋值
w1.c=12; 8、对myclassone float c赋值
w1.myMethodOne(12); 9、调用myclassone的mymethodone形参为int的方法,
w1.myMethodOne(); 10、调用myclassone的mymethodone无形参的方法System.out.println(w1.myMethodTwo(12)); 11、输出myclassone的mymethodtwo(12)值
w1.c=w1.myMethodTwo(); 12让c引用mymethodtwo方法
{ public static void main( String args[ ])
for( int i= 1; i<= 100; i++)
System.out.println("sum="+sum);
}功能为求出1/1+1/2+1/3+1/4….+1/100的和
编写一个java程序。要求该程序能够具有以下功能:
定义一个坐标类coord。坐标类coord必须满足如下要求:
a)coord类含有两部分数据:横坐标x和纵坐标y。x和y的类型都是int类型。
coord():构造函数,将横坐标和纵坐标的值都赋值为0
coord( int x, int y):构造函数,形参 x为横坐标的初值,y为纵坐标的初值。
coord coordAdd(int x, int y):将当前坐标对象与形参的值相加,所得的结果仍是一个坐标,返回给此方法的调用者。
(提示:可以将两个坐标相加定义为横坐标和横坐标相加,纵坐标和纵坐标相加。例如(1,2)+(3,4)=((1+3),(2+4))=(4,6))
public static void main(String[] args){
请编写一个java程序,利用该程序计算并输出 1+2+3+……+100的值
System.out.println("1+2+3+...100="+sum);
public static void main(String[] args){