资源描述
《Java语言与WWW技术》模拟试卷
4
一、单项选择题(每题2分,共30分)
1、main方法是JavaApplication程序执行的入口点,关于main方法的方法头以下哪项是合法的。()
A、publicstaticintmain(String[]arg) B、publicvoidmain(Stringarg[])
C、publicstaticvoidmain() D、publicstaticvoidmain(String[]args)
2、以下哪项标识符是不合法的。()
A、Char B、$m_1 C、2nd D、calculator
3、以下说法哪项是正确的()
1.classListenerExample
2.extendsKeyAdapterimplementsKeyListener{
3. publicvoidkeyPressed(KeyEventke)
4. { System.out.println("keypressed");}
5. }
A、不能通过编译,因为类头定义不能分行
B、不能通过编译,因为没有实现KeyListener接口中的所有方法
C、以上代码可通过编译
D、能通过编译,但若组件用该类作为Keyboard的监听者并且接收了KEY_TYPED事件,则在执行过程中会抛出异常。
4、当浏览器返回包含applet的页面时,调用以下哪个函数?()
A、init() B、start() C、stop() D、destroy()
5、当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式?()
A、FlowLayout B、CardLayout C、BorderLayout D、GridLayout
6、关于垃圾收集以下哪个叙述是对的。()
A、程序开发者必须自己创建一个线程进行内存释放的工作。
B、垃圾收集将检查并释放不再使用的内存。
C、垃圾收集允许程序开发者明确指定并立即释放该内存。
D、垃圾收集能够在期望的时间释放被java对象使用的内存。
7、下面关于继承的描述哪项是正确的。()
A、在java中只允许单一继承。
B、在java中一个类只能实现一个接口。
C、在java中一个类不能同时继承一个类和实现一个接口。
D、java允许多重继承。
8、以下哪个方法用于定义线程的执行体?()
A、start() B、init() C、run() D、synchronized()
9、已知如下代码:
publicclassArrayInit
{
inta[]=newint[10];
publicstaticvoidmain(Stringarg[]){
System.out.println(a[10]);}
}
以下哪个说法是正确的?()
A、编译通过,运行后输出null B、编译有错
C、编译通过,运行后输出0 D、编译通过,但运行时有异常发生
10、给出如下代码:
classTest{
privateintm;
publicstaticvoidfun(){
//somecode...
}
}
如何使成员变量m被函数fun()直接访问?()
A、将privateintm改为protectedintm
B、将privateintm改为publicintm
C、将privateintm改为staticintm
D、将privateintm改为intm
11、下面哪个函数是publicvoidoverloadFun(){...}的重载函数?()
A、voidoverloadFun(){...}
B、publicintoverloadFun(){...}
C、publicvoidoverloadFun(){...}
D、publicintoverloadFun(floatf){...}
12、以下哪个接口的定义是正确的?()
A、 interfaceA
{voidprint(){};}
B、 abstractinterfaceA
{voidprint();}
C、 abstractinterfaceAextendsA1,A2//A1、A2为已定义的接口
{abstractvoidprint(){};}
D、 interfaceA
{voidprint();}
13、假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?()
classA
{ inti;
staticStrings;
voidmethod1(){}
staticvoidmethod2(){}
}
A、System.out.println(a.i);B、a.method1();C、A.method1();D、A.method2()
14、一个线程的run方法包含以下语句,假定线程没有被打断,以下哪项是正确的()
1.try{
2.sleep(10);
3.}catch(InterruptedExceptione){}
A、不能通过编译,因为在run方法中可能不会捕捉到异常。
B、在第2行,线程将暂停运行,正好在10毫秒后继续运行。
C、在第2行,线程将暂停运行,最多在10毫秒内将继续运行。
D、在第2行,线程将暂停运行,将在10毫秒后的某一时刻继续运行。
15、分析下面的程序代码,以下哪个说法是正确的。()
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类中的构造方法,这个程序可以编译。
A、 这段程序可以通过编译,但由于方法名冲突,引起一个运行时错误。
B、 编译成功,运行情况良好。
二、改错题(每题3分,共15分)
判断下面的程序片断是否正确。若有错,指出错在哪里并改正;若正确,打“√”。
1、classTest
{ floatx;
abstractvoidfun();
}
2、classTest1
{ privateinti;
}
classTest2extendsTest1
{ intgetInt()
{ returni; }
}
3、publicstaticvoidmain(Stringargs[])
{charch=’c’;
try{ ch=System.in.read();
//省略其余代码
}
catch(Exceptione)
{ return; }
catch(IOExceptione)
{ System.out.println(e.toString()); }
}
4、publicclassTest
{ inti;
voidTest(inti)
{ this.i=i;}
}
5、publicclassTestimplementsRunnable
{ Threadt=newThread(this);
t.start();
protectedvoidrun()
{ System.out.println(“threadisrunningnow”); }
}
三、程序阅读题(1~8题每题4分,第9题占8分,共40分)
(注:在程序右侧空白处答题。)
1、阅读以下程序,写出运行结果。
importjava.io.*;
publicclassUseLabel
{ publicstaticvoidmain(String[]args)
{Loop:
for(inti=2;i<10;i++)
{if(i%3!=0) continueLoop;
System.out.print(i+"");
}
}
}
2、阅读以下程序,写出运行结果。
classTest1{
publicTest1(){
System.out.println(“Test1”);
showInfo();
}
publicvoidshowInfo(){
System.out.println(“inTest1”);
}
}
publicclassTest2extendsTest1{
publicTest2(){
System.out.print(“Test2”);
}
publicvoidshowInfo(){
System.out.println(“inTest2.”);
}
publicstaticvoidmain(String[]args){
newTest2();
}
}
3、阅读以下程序,写出运行结果。
classMyExceptionextendsException{
publicStringtoString(){ return"negativenumber";}
}
publicclassExceptionDemo{
publicstaticvoidmySqrt(inta)throwsMyException {
if(a<0) thrownewMyException();
System.out.println(Math.sqrt(a));
}
publicstaticvoidmain(Stringargs[]){
try{ mySqrt(4); mySqrt(-4); }
catch(MyExceptione){ System.out.println("Exception:"+e);}
}
}
4、阅读以下程序,写出运行结果。
publicclassAboutThreeNum
{
publicstaticvoidmain(String[]args)
{ System.out.println(fun(-8,50,23)); }
staticintfun(intx,inty,intz)
{ returnfun(x,fun(y,z)); }
staticintfun(intx,inty)
{ if(x>y)returnx;
elsereturny; }
}
5、写出以下程序的功能。
importjava.io.*;
publicclassAboutFile{
publicstaticvoidmain(String[]args)throwsIOException{
FileinputFile=newFile(“a.txt");
FileoutputFile=newFile(“b.txt");
FileReaderin=newFileReader(inputFile);
FileWriterout=newFileWriter(outputFile);
intc;
while((c=in.read())!=-1)out.write(c);
in.close();
out.close();}
}
6、阅读以下程序,写出运行结果。
classA
{ publicstaticvoidmain(String[]args)
{ Bb1=newB(10);
Bb2=newB(10);
if(b1==b2){ System.out.println("b1==b2"); }
else{ System.out.println("b1!=b2");} }
}
classB
{ intx;
B(intx){this.x=x;}
}
7、阅读以下程序,写出运行结果。
classStaticStuff
{
staticintx;
static{x+=5;}
publicstaticvoidmain(Stringargs[]){
System.out.println(“x=”+x); }
static{x%=3;}
}
8、阅读以下程序,写出运行结果。
publicclassStar
{
publicstaticvoidmain(Stringargs[])
{ chara[][]=newchar[3][3];
for(inti=0;i<a.length;i++)
for(intj=0;j<a[i].length;j++)
if(i>j) a[i][j]='';
else a[i][j]='*';
for(inti=0;i<a.length;i++)
{ for(intj=0;j<a[i].length;j++)
System.out.print(a[i][j]);
System.out.println(); }
}
}
9、阅读以下程序段,假定服务器端和客户端程序正常运行无异常发生,请回答以下问题:
①描述程序功能。(4分)
②客户端是否会发送一个负数?(2分)
③对于服务器端而言,接收到的0意味着什么?(2分)
//服务器端程序
importjava.io.*;
.*;
publicclassServer
{publicstaticvoidmain(String[]args)
{try
{
ServerSocketserverSocket=newServerSocket(8000);
SocketconnectToClient=serverSocket.accept();
DataInputStreamisFromClient=newDataInputStream(connectToClient.getInputStream());
DataOutputStreamosToClient=newDataOutputStream(connectToClient.getOutputStream());
while(true)
{doubleradius=isFromClient.readDouble();
if(radius==0)
break;
else
{ System.out.println("radiusreceivedfromclient:"+radius);
doublearea=radius*radius*Math.PI;
osToClient.writeDouble(area);
osToClient.flush();
System.out.println("Areafound:"+area);}
}
isFromClient.close();
osToClient.close();
connectToClient.close();
}
catch(IOExceptionex)
{System.err.println(ex);}
}
}
//客户端程序
importjava.io.*;
.*;
publicclassClient
{publicstaticvoidmain(String[]args)
{try
{SocketconnectToServer=newSocket("localhost",8000);
DataInputStreamisFromServer=newDataInputStream(
connectToServer.getInputStream());
DataOutputStreamosToServer=
newDataOutputStream(connectToServer.getOutputStream());
while(true)
{System.out.print("Pleaseenteraradius:");
doubleradius=Double.parseDouble(
newBufferedReader(newInputStreamReader(System.in),1).readLine());
if(radius==0)
{osToServer.writeDouble(radius);
osToServer.flush();
break; }
else{if(radius>0)
{osToServer.writeDouble(radius);
osToServer.flush();
doublearea=isFromServer.readDouble();
System.out.println("Areareceivedfromtheserveris"+area);}
}}
isFromServer.close();
osToServer.close();
connectToServer.close();
}
catch(IOExceptionex){System.err.println(ex);}
}
}
四、编程题(15分)
编写一个Complex类,实现复数的计算。该复数类Complex必须满足如下要求:
(1) 复数类Complex的属性有:
r:double型,代表复数的实部
i:double型,代表复数的虚部
(2) 复数类Complex的方法有:
Complex(doubler,doublei):构造方法,将复数的实部初始化为r,将虚部初始化为i。
getReal():返回复数的实部。
getImaginary():返回复数的虚部。
magnitude():返回一个复数的大小(实部与虚部平方和的开方,开方可使用Math.sqrt()方法)。
Complexadd(Complexc1,Complexc2):静态方法,实现两个复数相加。
Complexmultiply(Complexc1,Complexc2):静态方法,实现两个复数相乘。
publicStringtoString():把当前复数对象的实部a、虚部b组合成“a+bi”的字符串形式。
publicclassComplex
{
privatedoubler; /*实部*/
privatedoublei; /*虚部*/
//添加构造方法,占1分
//添加toString方法,占2分
//添加getReal方法,占2分
//添加getImaginary方法,占2分
//添加magnitude方法,占2分
//添加add方法,占3分
//添加multiply方法,占3分
一、单项选择题(每题2分,共30分)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
D
C
C
B
A
B
A
C
B
C
D
D
C
D
B
二、改错题(每题3分,共15分)
(注:指出错在哪儿并改正者得3分,仅指出错处得1分。)
1、Test类作为具体类中不能包含有抽象方法。改正如下:
abstractclassTest 或 classTest
{ floatx; { floatx;
abstractvoidfun(); abstractvoidfun();
} }
2、i为父类定义的私有域,子类无法继承并引用。 改正如下:
classTest1 或 classTest1
{ privateinti; { privateinti;
} }
classTest2extendsTest1 classTest2extendsTest1
{ intvoidgetInt() { intgetInt()
{ returni; } { returni; }
} }
3、捕获异常应将具体的异常类参数置前,题中将Exception类置前,将捕获所有异常,无法进入其他catch块。 改正如下:
publicstaticvoidmain(Stringargs[])
{ charch=’c’;
try{ ch=System.in.read();
//省略其余代码
}
catch(IOExceptione)
{System.out.println(e.toString()); }
catch(Exceptione)
{ return; }
}
4、构造方法不能定义返回类型。改正如下:
public classTest
{ inti;
voidTest(inti)
{ this.i=i;}
}
5、run()方法作为接口中的方法缺省是public的,题中缩小了范围。改正如下:
publicclassTestimplementsRunnable
{ Threadt=newThread(this);
t.start();
publicprotectedvoidrun()
{ System.out.println(“threadisrunningnow”); }
}
三、程序阅读题(1~8题每题4分,第9题占8分,共40分)
1
369
2
Test1
inTest2
Test2
3
2.0
Exception:negativenumber
4
50
5
复制文件a.txt至b.txt
6
b1!=b2
7
x=2
8
***
**
*
9
①客户端发送半径,服务器端接收并计算圆的面积,然后将求得的面积值发回至客户端显示。(4分)
②不会(2分)
③这是客户端向服务器端发送的停止连接信号,服务器端将终止连接。(2分)
四、编程题(15分)
//参考程序及评分标准如下:
publicclassComplex
{
privatedoubler; /*Therealpart*/
privatedoublei; /*Theimaginarypart*
Complex(doublerr,doubleii)//构造方法定义,占1分
{ r=rr; i=ii;
}
publicStringtoString()//toString() ,占2分
{
StringBuffersb=newStringBuffer().append(r);
if(i>0)
sb.append('+'); //elseappend(i)appends-sign
returnsb.append(i).append('i').toString();
}
publicdoublegetReal()//getReal方法,占2分
{ returnr;
}
publicdoublegetImaginary()//getImaginary方法,占2分
{ returni;
}
publicdoublemagnitude()//magnitude方法,占2分
{ returnMath.sqrt(r*r+i*i);
}
publicstaticComplexadd(Complexc1,Complexc2)//add方法,占3分
{ returnnewComplex(c1.r+c2.r,c1.i+c2.i);
}
publicstaticComplexmultiply(Complexc1,Complexc2)//添加multiply方法,占3分
{ returnnewComplex(c1.r*c2.r-c1.i*c2.i,c1.r*c2.i+c1.i*c2.r);
}
}
}
展开阅读全文