Java复习题及答案.docx
- 文档编号:26511902
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:42
- 大小:37.03KB
Java复习题及答案.docx
《Java复习题及答案.docx》由会员分享,可在线阅读,更多相关《Java复习题及答案.docx(42页珍藏版)》请在冰豆网上搜索。
Java复习题及答案
一、判断题(每题1分,共15分)
1、Java允许创建不规则数组,即Java多维数组中各行的列数可以不同。
(1)
2、接口和类一样也可以有继承关系,而且都只能支持单继承。
(0)
3、所有类至少有一个构造器,构造器用来初始化类的新对象,构造器与类同名,返回类型只能为void。
(0)
4、包是按照目录、子目录存放的,可以在程序中用package定义包,若没有package一行,则表示该文件中的类不属于任何一个包。
(0)
5、Java对事件的处理是采用委托方式进行的,即将需要进行事件处理的组件委托给指定的事件处理器进行处理。
(1)
6、在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在前面,子类放在后面。
(0)
7、在实例方法或构造器中,this用来引用当前对象,通过使用this可引用当前对象的任何成员。
(1)
8、我们可以方便地编写Java客户机/服务器程序,在客户机/服务器模式中,客户机一般通过套接字(Socket)使用服务器所提供的服务,Socket由两部分组成:
IP地址和端口号。
(1)
9、Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。
(0)
10、Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。
(0)
11、当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。
(1)
12、如果f是父类Flower的对象,而r是子类Rose的对象,则语句f=r是正确的。
(1)
13、Java系统的标准输入对象是System.in,标准输出对象有两个,分别是System.out和System.err。
(1)
14、final类中的属性和方法都必须被final修饰符修饰。
(0)
15、子类可以定义与父类同名的方法,称为方法的覆盖,方法覆盖要求子类的方法与父类的方法名字和参数都相同,但返回值类型可以不同。
(0)
二、单项选择题(每题2分,共30分)
1、若在某一个类定义中定义有如下的方法:
finalvoidaFinalFunction();则该方法属于(c)。
A、本地方法B、解态方法C、最终方法D、抽象方法
2、main方法是JavaApplication程序执行的入口点,关于main方法的方法头以下哪项是合法的(b)。
A、publicstaticvoidmain()
B、publicstaticvoidmain(String[]args)
C、publicstaticintmain(String[]args)
D、publicvoidmain(Stringarg[])
3、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序的特性称为(c)。
A、隐藏B、覆盖C、重载D、Java不支持此特性
4、在Javaapplet程序中,用户自定义的Applet子类常常覆盖父类的(c)方法来完成applet界面的初始化工作。
A、start()B、stop()C、init()D、paint()
5、以下程序段执行后将有(b)个字节被写入到文件a中。
try{
fos=new(“a”);
DataOutputStreamdos=newDataOutputStream(fos);
dos.writeInt(3);
dos.writeDouble(0.01);
dos.close();
fos.close();
}
catch(IOExceptione){}
A、16B、12C、8D、2
6、以下代码段执行后的输出结果为(c)。
intx=-3;floaty=10.0f;
System.out.println(y%x);
A、不能成功编译B、-1.0C、1.0D、-1
7、编译并运行以下程序,以下描述哪个选项是正确的(a)。
1.classA{
2.protectedStringtoString(){//tostring只适用于对象的调用
3.returnsuper.toString();}
4.}
A、行2出错,不能成功编译B、编译通过但运行时出错
C、编译通过运行无异常D、不能成功编译,行3出错
8、假设Foo类有如下定义,设f是Foo类的一个实例,下列语句调用哪个是错误的?
(A)
publicclassFoo
{inti;
staticStrings;
voidimethod(){}
staticvoidsmethod(){}
}
A、Foo.imethod();B、f.imethod();
C、System.out.println(f.i);D、Foo.smethod()
9、分析下面的程序代码,以下哪个说法是正确的。
(B)
publicclassTestextendsA
{publicstaticvoidmain(String[]args)
{Testt=newTest();
t.print();}
}
classA
{Strings;
A(Strings)
{this.s=s;}
publicvoidprint()
{System.out.println(s);}
}
A、因为Test没有构造方法Test(),所以这段程序不能编译。
B、如果删除A类中的构造方法,这个程序可以编译。
C、这段程序可以通过编译,但由于方法名冲突,引起一个运行时错误。
D、编译成功,运行情况良好。
10、类Test1定义如下:
1.publicclassTest1{
2.publicfloataMethod(floata,floatb){}
3.
4.}
将以下哪种方法插入行3是不合法的。
(B)
A、publicfloataMethod(floata,floatb,floatc){}
B、publicfloataMethod(floatc,floatd){}
C、publicintaMethod(inta,intb){}
D、privatefloataMethod(inta,intb,intc){}
11、编译运行以下程序后,关于输出结果的说明正确的是(C)
publicclassConditional{
publicstaticvoidmain(Stringargs[]){
intx=1;
System.out.println(“valueis“+((x<1)?
1.0:
0));
}
}
A、输出结果为:
valueis1.0B、输出结果为:
valueis0
C、输出结果为:
valueis0.0D、编译错误
12、以下说法哪项是正确的(A)
1.classMyListener
2.extendsMouseAdapterimplementsMouseListener{
3.publicvoidmouseEntered(MouseEventmev)
4.{System.out.println("Mouseentered.");}
5.}
A、以上代码可通过编译
B、不能通过编译,因为没有实现MouseListener接口中的所有方法
C、不能通过编译,因为类头定义不能分行
D、能通过编译,但是若组件用该类作为Mouse事件的监听者并且接收了mouse-exited事件,则在执行过程中会抛出异常
13、编译并运行以下程序(命令:
javaTestClass0),关于运行结果的描述以下哪个选项是正确的(A)
classTestClass{
publicstaticvoidmain(String[]args){
longi=0;
try{
i=Integer.parseInt(args[0]);
}catch(Exceptione){}
switch(i)
{case0:
System.out.println("0");
case1:
System.out.println("1");
default:
System.out.println("default");}}
}
A、编译出错B、打印出“0”C、打印出“1”D、打印出“default”
14、一个线程的run方法包含以下语句,假定线程没有被打断,以下哪项是正确的(D)
1.try{
2.sleep(100);
3.}catch(InterruptedExceptione){}
A、不能通过编译,因为在run方法中可能不会捕捉到异常。
B、在第2行,线程将暂停运行,正好在100毫秒后继续运行。
C、在第2行,线程将暂停运行,最多在100毫秒内将继续运行。
D、在第2行,线程将暂停运行,将在100毫秒后的某一时刻继续运行。
15、以下哪个接口的定义是正确的?
(D)
A、interfaceA
{voidprint(){};}
B、abstractinterfaceA
{voidprint();}
C、abstractinterfaceAextendsI1,I2//I1、I2为已定义的接口
{abstractvoidprint(){};}
D、interfaceA
{voidprint();}
三、程序阅读题(1~8题每题4分,第9题占8分,共40分)
1、若文件test.dat不存在,则试图编译并运行以下程序时会发生什么情况?
发生异常输出IOException
importjava.io.*;
classTestIO
{publicstaticvoidmain(String[]args)
{
try{RandomAccessFileraf=newRandomAccessFile("test.dat","r");
inti=raf.readInt();}
catch(IOExceptione){System.out.println("IOException");}
}
}
2、以下程序的输出结果为false,true。
publicclassEqualsMethod{
publicstaticvoidmain(String[]args){
Integern1=newInteger(12);
Integern2=newInteger(12);
System.out.print(n1==n2);
System.out.print(“,”);
System.out.println(n1!
=n2);
}
}
3、以下程序的输出结果为one,three。
classLabelBreak{
publicstaticvoidmain(String[]args){
intx=20;
Label1:
{
System.out.print(“one,”);
if(x>10)breakLabel1;
System.out.print(“two,”);
}
System.out.println(“three”);
}
}
4、阅读以下程序:
importjava.io.*;
publicclassReverse
{publicstaticvoidmain(Stringargs[])
{inti,n=5;
inta[]=newint[5];
for(i=0;i try{ BufferedReaderbr=newBufferedReader( newInputStreamReader(System.in)); a[i]=Integer.parseInt(br.readLine()); }catch(IOExceptione){}; for(i=n-1;i>=0;i--) System.out.print(a[i]+""); System.out.println(); } } 若输入: 1 2 7 4 5 则以上程序段的输出结果为54721。 5、写出以下程序的功能。 显示输出文件new的内容 importjava.io.*; class{ publicstaticvoidmain(String[]args)throwsIOException{ intb; (“new”); while((b=())! =-1){ System.out.print((char)b);} } } 6、以下程序的输出结果为123。 classTest{ staticintnum; intc; publicTest(){ num++; } publicstaticvoidmain(String[]args){ System.out.print(x.num); Testx=newTest(); System.out.print(x.num); Testx=newTest(); System.out.println(x.num); } } 7、以下程序的输出结果为Insidemain()Mug (1)c1initializedMugs() 。 classMug{ Mug(intmarker){ System.out.println("Mug("+marker+")");} voidf(intmarker){ System.out.println("f("+marker+")");} } publicclassMugs{ Mugc1; {c1=newMug (1); System.out.println("c1initialized");} Mugs(){System.out.println("Mugs()");} publicstaticvoidmain(String[]args){ System.out.println("Insidemain()"); Mugsx=newMugs(); } } 8、以下程序的输出结果为AB。 classA{ publicA(){ System.out.print(“A”); } } publicclassBextendsA{ publicB(){ System.out.print(“B”); } publicstaticvoidmain(String[]args){ newB(); } } 9、阅读以下程序段,假定服务器端和客户端程序正常运行无异常发生,请回答以下问题: ①描述程序功能。 (4分) ②假定在客户端输入2.0,请写出服务器端的输出结果。 (4分) //服务器端程序 importjava.io.*; import.*; publicclassServer {publicstaticvoidmain(String[]args) {try {ServerSocketserverSocket=newServerSocket(8000); SocketconnectToClient=serverSocket.accept(); DataInputStreamisFromClient=newDataInputStream(connectToClient.getInputStream()); DataOutputStreamosToClient=newDataOutputStream(connectToClient.getOutputStream()); while(true) {doublevalue=isFromClient.readDouble(); System.out.println("valuereceivedfromclient: "+value); doubleresult=value*value; osToClient.writeDouble(result); osToClient.flush(); System.out.println("result: "+result);} } catch(IOExceptionex) {System.err.println(ex);}} } //客户端程序 importjava.io.*; import.*; publicclassClient {publicstaticvoidmain(String[]args) {try {SocketconnectToServer=newSocket("localhost",8000); DataInputStreamisFromServer=newDataInputStream( connectToServer.getInputStream()); DataOutputStreamosToServer= newDataOutputStream(connectToServer.getOutputStream()); while(true) {System.out.print("Pleaseenteradoublevalue: "); doublevalue=Double.parseDouble( newBufferedReader(newInputStreamReader(System.in),1).readLine()); osToServer.writeDouble(value); osToServer.flush(); doubleresult=isFromServer.readDouble(); System.out.println("resultreceivedfromtheserveris"+result);} } catch(IOExceptionex) {System.err.println(ex);}} } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 √ × × × √ × √ √ × × √ √ √ × × 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 C B C C B C A A B B C A A D D 1 程序发生异常,捕获异常后并输出: IOException 2 false,true 3 one,three 4 54721 5 显示输出文件new的内容 6 012 7 Insidemain() Mug (1) c1initialized Mugs() 8 AB 9 ①客户端发送一个实数,服务器端接收并计算该数的平方,然后将求得的平方值发回至客户端显示。 客户端可继续向服务器发送直至有一方退出。 (4分) ②valuereceivedfromclient: 2.0 resultfound: 4.0(4分) 1、在java中如果声明一个类为final,表示什么意思? 答: final是最终的意思,final可用于定义变量、方法和类但含义不同,声明为final的类不能被继承。 2、父类的构造方法是否可以被子类覆盖(重写)? 答: 父类的构造方法不可以被子类覆盖,因为父类和子类的类名是不可能一样的。 3、请讲述String和StringBuffer的区别。 答: String类所定义的对象是用于存放“长度固定”的字符串。 StringBuffer类所定义的对象是用于存放“长度可变动”的字符串。 4、如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢? 答: 因为类A、B不是接口,所以是不可以直接继承的,但可以将A、B类定义成父子类,那么C类就能实现A、B类的功能了。 假如A为B的父类,B为C的父类,此时C就能实现A、B的功能。 5、结合Java视频Lesson5(多线程),分析sleep()和wait()方法的区别。 答: Sleeping睡眠的意思: sleep()方法用来暂时中止执行的线程。 在睡眠后,线程将进入就绪状态。 waiting等待的意思: 如果调用了wait()方法,线程将处于等待状态。 用于在两个或多个线程并发运行时。 6、谈谈你对抽象类和接口的理解。 答: 定义抽象类的目的是提供可由其子类共享的一般形式、子类可以根据自身需要扩展抽象类、抽象类不能实例化、抽象方法没有函数体、抽象方法必须在子类中给出具体实现。 他使用extends来继承。 接口: 一个接口允许一个类从几个接口继承而来,Java程序一次只能继承一个类但可以实现几个接口,接口不能有任何具体的方法,接口也可用来定义可由类使用的一组常量。 其实现方式是interface来实现。 7.Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。 与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。 当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是publicstatic,所有方法默认情况下是public.一个类可以实现多个接口。 8.垃圾回收的优点和原理。 并考虑2种回收机制。 Java语言中一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 复习题 答案