1、《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、以下说法哪项是正确的
2、 1.classListenerExample 2.extendsKeyAdapterimplementsKeyListener{ 3. publicvoidkeyPressed(KeyEventke) 4. { System.out.println("keypressed");} 5. } A、不能通过编译,因为类头定义不能分行 B、不能通过编译,因为没有实现KeyListener接口中的所有方法 C、以上代码可通过编译 D、能通过编译,但若组件用该类作为Keyboard的监听者并且接收了KEY_TYPED事件,则在执行过程中会抛出异常。 4、当浏览器返回包含ap
3、plet的页面时,调用以下哪个函数?() 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、下面关于继
4、承的描述哪项是正确的。() 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]);} } 以下哪个说法是正
5、确的?() 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、下
6、面哪个函数是publicvoidoverloadFun(){...}的重载函数?() A、voidoverloadFun(){...} B、publicintoverloadFun(){...} C、publicvoidoverloadFun(){...} D、publicintoverloadFun(floatf){...} 12、以下哪个接口的定义是正确的?() A、 interfaceA {voidprint(){};} B、 abstractinterfaceA {voidprint();} C、 abstractinterfaceAextendsA1,A2//A1
7、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方法包含以下语句,假定线程没有被打断,以下哪项是正
8、确的() 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();
9、 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
10、 { 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
11、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分) (注:在程序右侧空白处答题。)
12、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();
13、 } publicvoidshowInfo(){ System.out.println(“inTest1”); } } publicclassTest2extendsTest1{ publicTest2(){ System.out.print(“Test2”); } publicvoidshowInfo(){ System.out.println(“inTest2.”); } publicstaticvoidmain(String[]args){ newTest2(); } } 3、阅读以下程序,写出运行结果。
14、classMyExceptionextendsException{ publicStringtoString(){ return"negativenumber";} } publicclassExceptionDemo{ publicstaticvoidmySqrt(inta)throwsMyException { if(a<0) thrownewMyException(); System.out.println(Math.sqrt(a)); } publicstaticvoidmain(Stringargs[]){ try{ mySqr
15、t(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,
16、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(outp
17、utFile); 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;
18、 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 19、ength;i++)
for(intj=0;jj) a[i][j]='';
else a[i][j]='*';
for(inti=0;i 20、2分)
③对于服务器端而言,接收到的0意味着什么?(2分)
//服务器端程序
importjava.io.*;
.*;
publicclassServer
{publicstaticvoidmain(String[]args)
{try
{
ServerSocketserverSocket=newServerSocket(8000);
SocketconnectToClient=serverSocket.accept();
DataInputStreamisFromClient=newDataInputStream(connectToClient.ge 21、tInputStream());
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. 22、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[]ar 23、gs)
{try
{SocketconnectToServer=newSocket("localhost",8000);
DataInputStreamisFromServer=newDataInputStream(
connectToServer.getInputStream());
DataOutputStreamosToServer=
newDataOutputStream(connectToServer.getOutputStream());
while(true)
{System.out.print("Pleaseenteraradius:");
dou 24、bleradius=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 25、);
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:doub 26、le型,代表复数的虚部
(2) 复数类Complex的方法有:
Complex(doubler,doublei):构造方法,将复数的实部初始化为r,将虚部初始化为i。
getReal():返回复数的实部。
getImaginary():返回复数的虚部。
magnitude():返回一个复数的大小(实部与虚部平方和的开方,开方可使用Math.sqrt()方法)。
Complexadd(Complexc1,Complexc2):静态方法,实现两个复数相加。
Complexmultiply(Complexc1,Complexc2):静态方法,实现两个复数相乘。
publicStrin 27、gtoString():把当前复数对象的实部a、虚部b组合成“a+bi”的字符串形式。
publicclassComplex
{
privatedoubler; /*实部*/
privatedoublei; /*虚部*/
//添加构造方法,占1分
//添加toString方法,占2分
//添加getReal方法,占2分
//添加getImaginary方法,占2分
//添加magnitude方法,占2分
//添加add方法,占3分
28、
//添加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 29、 或 classTest
{ floatx; { floatx;
abstractvoidfun(); abstractvoidfun();
} }
2、i为父类定义的私有域,子类无法继承并引用。 改正如下:
classTest1 或 classTest1
{ privateinti; { privateinti;
} }
classTest2extendsTest1 classTest2extendsTest1
{ intvoidgetInt() { intgetIn 30、t()
{ returni; } { returni; }
} }
3、捕获异常应将具体的异常类参数置前,题中将Exception类置前,将捕获所有异常,无法进入其他catch块。 改正如下:
publicstaticvoidmain(Stringargs[])
{ charch=’c’;
try{ ch=System.in.read();
//省略其余代码
}
catch(IOExceptione)
{System.out.println(e.toString()); }
catch(Exceptione)
{ r 31、eturn; }
}
4、构造方法不能定义返回类型。改正如下:
public classTest
{ inti;
voidTest(inti)
{ this.i=i;}
}
5、run()方法作为接口中的方法缺省是public的,题中缩小了范围。改正如下:
publicclassTestimplementsRunnable
{ Threadt=newThread(this);
t.start();
publicprotectedvoidrun()
{ System.out.println(“threadisrunningnow”); } 32、
}
三、程序阅读题(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分)
//参考程序及评分标准如下:
publ 33、icclassComplex
{
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 34、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);
}
}
}






