一.选择题(均为单选题,每题2分,共40分)1.下列说法不正确的是(C)A.IOException必须被捕获或抛出B.java语言会自动初始化变量的值C.java语言不允许同时继承一个类并实现一个接口D.java语言会自动回收内存中的垃圾2.Frame的默认的布局管理器是下列哪一个(B)A.FlowLayoutB.BorderLayoutC.GridLayoutD.CardLayout3.执行下列代码后,哪个结论是正确的(B)String[]s=newString[10];A.s[10]为″″B.s[9]为nullC.s[0]为未定义D.s.length为1014.内部类是在一个类内嵌套定义的类。其特点描述错误的是(B)A.只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名B.可以使用它所在类的静态成员变量或实例成员变量,但不可以使用所在类的局部变量C.可以作为其它类的成员,而且可访问它所在类的成员D.除static内部类外,不能在类内声明static成员5.在异常处理中,如释放资源、关闭文件、关闭数据库等由(C)来完成。A.try子句B.catch子句C.finally子句D.throw子句6.下面哪个语句是正确的(A)A.Objecto=newButton(″A″);B.Buttonb=newObject(″B″);C.Panelp=newFrame();D.Framef=newPanel();7.Java虚拟机的执行过程有多个特点,下列哪个特点不属于JVM执行特点(D)A.多线程B.动态连接C.异常处理D.异步处理8.当方法遇到异常又不知如何处理时,下列哪种说法是正确的(C)A.捕获异常B.抛出异常C.声明异常D.嵌套异常9.下列不属于容器的是(B)A.WindowB.TextBoxC.PanelD.ScrollPane10.监听事件和处理事件(B)A都由Listener完成B都由相应事件Listener处登记过的构件完成C由Listener和构件分别完成D由Listener和窗口分别完成11.为实现多线程之间的通信,需要使用下列哪种流才合适(D)AFilterstreamBFilestreamCRandomaccessstreamDPipedstream12.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的(B)A、ArrayListmyList=newObject();B、ListmyList=newArrayList();C、ArrayListmyList=newList();D、ListmyList=newList();13.要从文件file.dat文件中读出第10个字节到变量C中,下列哪个方法适合(A)A、FileInputStreamin=newFileInputStream(file.dat);in.skip(9);intc=in.read();B、FileInputStreamin=newFileInputStream(file.dat);in.skip(10);intc=in.read();C、FileInputStreamin=newFileInputStream(file.dat);intc=in.read();D、RandomAccessFilein=newRandomAccessFile(file.dat);in.skip(9);intc=in.readByte();14.给出下面代码:publicclassPerson{staticintarr[]=newint[10];publicstaticvoidmain(Stringa[]){System.out.println(arr[1]);}}那个语句是正确的(C)A、编译时将产生错误;B、编译时正确,运行时将产生错误;C、输出零;D、输出空。15.哪个关键字可以对对象加互斥锁(B)AtransientBsynchronizedCserializeDstatic16.类Teacher和Student是类Person的子类;Personp;Teachert;Students;//p,tandsareallnon-null.if(tinstanceofPerson){s=(Student)t;}最后一句语句的结果是(C)A、将构造一个Student对象;B、表达式是合法的;C、表达式是错误的;D、编译时正确,但运行时错误。17.对于下列代码:1)classPerson{2)publicvoidprintValue(inti,intj){//...}3)publicvoidprintValue(inti){//...}4)}5)publicclassTeacherextendsPerson{6)publicvoidprintValue(){//...}7)publicvoidprintValue(inti){//...}8)publicstaticvoidmain(Stringargs[]){9)Persont=newTeacher();10)t.printValue(10);11)}第10行语句将调用哪行语句?(D)A、line2B、line3C、line6D、line718.欲编写如下图的一个界面,用于显示用户指定的图像:如果在区域A中只能放置一个AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件(D)A、TextAreaB、PanelC、AppletD、Canvas19.界面如上题所示。若Button1的功能是:点击后弹出一个用于输入的界面,获取用户想要显示的图像文件名,则该界面最好是(从编程简单和程序不易出错的角度考虑)(C)A、模式(Modal)DialogB、非模式(None-modal)DialogC、FileDialogD、Frame20.对一个java源文件aaa.java,编辑保存后但未编译,在其所在目录下执行javaaaa,则接着会出现什么(C)A、error:cannotread:aaa.javaB、无任何显示C、Exceptioninthreadmainjava.lang.NoClassDefFoundError:aaaD、程序正常执行并显示二、填空题(每题1分共10分)1.用static修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字(static)修饰的数据。2.Java语言通过接口支持(多重)继承,使类继承具有更灵活的扩展性。3.有些情况下如多线程对共享数据操作时,这种线程运行顺序的不确定性将会产生执行结果的不确定,使共享数据的一致性被破坏,因此在某些应用程序中必须对线程进行(并发控制)。4.对象串行化可以很容易地扩展成支持Java对象的(持久存储),它提供了对象从流中重建的补充方式5.下列程序中构造了一个SET并且调用其方法add(),输出结果是(1)publicclassA{publicinthashCode(){return1;}publicBooleanequals(Objectb){returntrue}publicstaticvoidmain(Stringargs[]){Setset=newHashSet();set.add(newA());set.add(newA());set.add(newA());System.out.println(set.size());}}6.如果有一个类MyFrame是Frame的子类,能够被不同包中的类所使用,同时又能够为线程提供运行代码(run()方法),请写出该类的声明头。(publicclassMyFrameextendsFrameimplementsRunnable)7.被关键字(final)修饰的方法是不能被当前类的子类重新定义的方法8.StringBuffersb=newStringBuffer(Hunan);执行以上语句后sb的初始容量是(21)9.设有数组定义:intMyIntArray[]={10,20,30,40,50,60,70};则执行以下几个语句后的输出结果是(120)。ints=0;for(inti=0;iMyIntArray.length;i++)if(i%2==1)s+=MyIntArray[i];System.out.println(s);10.线程在使用wait()方法进入等待状态之后,其他线程可以调用此对象的(notify())方法将它唤醒。三.程序填空(每空2分,共10分)1.将主方法的参数逐个打印输出,文件名为mtest.javaclassmtest//类的声明{publicstaticvoidmain(Stringargs[]){intn=args.length;//n为数组长度if(n==0)//判断是否有参数System.out.println(“没有参数”);else{System.out.println(“参数个数:”+n);for(inti=0;in;i++)//循环System.out.println(“args[”+i+”]=”+args[i]);//打印数组元素}}}2.在空白处填上合适的语句。publicclassServerTimedOutExceptionextendsException{privateintport;publicServerTimedOutException(Stringmessage,intport){super(message);this.port=port;}publicintgetPort(){returnport;}}classClient{//在下行空白出填上声明抛弃ServerTimedOutException例外的语句publicvoidconnectMe(StringserverName)throwsServerTimedException;{intsuccess;intportToConnect=80;success=open(serverName,portToConnect);if(success==-1){/*在下行空白处填上抛出ServerTimedOutException例外的语句*/thrownewServerTimedException(serverName,portName);}}}四、编程题(每题10分,共40分)1.使用socket编写一个服务器端程序,服务器端程序在端口8888监听,如果它接到客户端发来的hello请求时会回应一个hello,对客户端的其他请求不响应。importjava.io.*;importjava.net.*;publicclassHelloServer{publicstaticvoidmain(Stringargs[])throwsIOException{ServerSocketserver=null;server=newServerSocket(8888);SocketClientSocket=null;ClientSocket=server.accept();Stringline;BufferedReaderis=newBufferedReader(newInputStreamReader(ClientSocket.getInputStream()));PrintWriteros=newPrintWriter(ClientSocket.getOutputStream());while(true){line=is.readLine();if(line.equals(hello)){os.println(hello);os.flush();}}}2.用输入/输出写一个程序,让用户输入一些姓名和电话号码。每一个姓名和号码将加在文件里。用户通过点Done按钮来告诉系统整个列表已输入完毕。如果用户输入完整个列表,程序将创建一个输出文件并显示或打印出来。格式形如:电话1,姓名1电话2,姓名2……imp