第1页共8页广州民航职业技术学院2010/2011学年第一学期08级计算机《JAVA程序设计》期末考试题(C卷)(闭卷)班级_________学号____姓名__________成绩______一、选择题(请将正确的答案按要求填在答题纸上;1~15题每题2分,共30分)1、Java源文件和编译后的文件扩展名分别为(A)A..java和.classB..class和.javaC..class和.classD..java和.java2、void的含义为(C):A.方法体为空B.定义的方法没有形参C.定义的方法没有返回值D.方法的返回值不能参加算术运算3、Java语言中创建一个对象使用的关键字为(C)A.classB.interfaceC.newD.create4、对于可以独立运行的Java应用程序,下列(D)说法是正确的。A.无须main方法B.必须有两个main方法C.可以有多个或零个main方法D.必须有一个main方法5、布尔型变量真值表示为(A)A.trueB.falseC.tD.f6、设有对象x具有属性a则访问该属性的方法为(C)A.a.xB.a.x()C.x.aD.x.a()7、设数组Array由以下语句定义intage=newint[10];则数组的第一个元素的正确引用方法为(D)A.age[1]B.Age[0]C.age[]D.age[0]8、以public修饰的类如:publicclassCar{…}则Car(A)A.可被其它程序包中的类使用B.仅能被本程序包中的类使用第2页共8页C.不能被任意其它类使用D.不能被其它类继承9、paint()方法使用哪种类型的参数?(A)A.GraphicsB.Graphics2DC.StringD.Color10、指出下列程序运行的结果(B)publicclassExample{Stringstr=newString(good);char[]ch={'a','b','c'};publicstaticvoidmain(Stringargs[]){Exampleex=newExample();ex.change(ex.str,ex.ch);System.out.print(ex.str+and);Sytem.out.print(ex.ch);}publicvoidchange(Stringstr,charch[]){str=testok;ch[0]='g';}}A.goodandabcB.goodandgbcC.testokandabcD.testokandgbc11、哪个关键字可以对对象加互斥锁?(B)A.transientB.synchronizedC.serializeD.static12、在JavaApplet程序用户自定义的Applet子类中,一般需要重载父类的(D)方法来完成一些画图操作。A.start()B.stop()C.init()D.paint()13、下面哪种不是Java的数据类型(D)A.基本类型B.数组类型C.类D.界面类型14、continue语句(C)A、只中断最内层的循环B、只中断最外层的循环C、只中断所在层循环中的当次循环D、只中断某一层的循环15、构造方法何时被调用(B)A.类定义时B.创建对象时第3页共8页C.调用对象方法时D.使用对象的变量时二、选择题(请将正确的答案按要求填在答题纸上;1~10空每空2分,共20分)1、如果一个JavaApplet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是___Applet__类的子类并且存储该源程序文件的文件名为__MyApplet.java_。2、设x=2,则表达式(x++)/3的值是___0__。3、在Java程序中,通过类的定义只能实现__单_重继承,但通过接口的定义可以实现__多_重继承关系。4、switch语句中,在每个case子句后进行跳转的语句是___break__。5、开发Java程序的一般步骤是:源程序编辑、生成字节码和解释执行。6、Socket称为套接字,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个Socket。三、代码阅读及填空题(请将正确的答案按要求填在答题纸上;每注释空2分,每代码空3分,共30分)1、编写一个由throw抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序,当在程序出现异常之前利用throw语句来抛出异常,可以做到防患于未然,提前进行异常处理,将由被动处理异常转变为主动防止异常发生。importjava.io.*;publicclassX7_3_4{publicstaticvoidmain(Stringargs[])throwsIOException{InputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);System.out.println(请输入两个整数:);//读取用户输入的字符串并解析为整数(注释1)inta=Integer.parseInt(br.readLine());intb=Integer.parseInt(br.readLine());try{第4页共8页if(b==0)(填空1)thrownewArithmeticException(抛出算术异常);System.out.println(a/b);}catch(ArithmeticExceptione){//如果出现除0错误时打印栈信息,并打印出错信息(注释2)e.printStackTrace();System.out.println(出现被0除的情况!);}intc[]={1,2,3,4},sum=0;try{for(inti=0;i5;i++){if(i=4)(填空2)thrownewArrayIndexOutOfBoundsException(抛出数组下标越界异常);sum+=c[i];System.out.println(sum=+sum);}}catch(ArrayIndexOutOfBoundsExceptione){e.printStackTrace();System.out.println(数组下标越界!);}}}2、创建一个Frame类型窗口,在窗口中添加2个不同颜色的Panel面板,每个面板中添加2个按钮构件。首先定义一个主类,让该类继承Frame类。定义该类的数据成员,包括两个Panel对象,一个长度为4的Button对象数组。创建类的工作方法,在方法中创建各个对象、设置对象属性、布局整个界面、设置窗口大小并显示界面。在类的main()方法中创建本类对象,从而显示整个窗口界面。importjava.io.*;importjava.awt.*;publicclassX10_3_1extendsFrame{Panelpn1,pn2;//定义面板Button[]bt=newButton[4];//定义按钮数组publicstaticvoidmain(String[]args)throwsIOException{newX10_3_1();}publicX10_3_1(){第5页共8页pn1=newPanel();//创建面板对象pn2=newPanel();pn1.setBackground(Color.yellow);//设置pn1背景颜色为黄色pn2.setBackground(Color.green);for(inti=0;i4;i++){//创建按钮对象bt[i]=newButton(Button+(i+1));}pn1.add(bt[0]);//向面板中添加按钮pn1.add(bt[1]);pn2.add(bt[2]);pn2.add(bt[3]);add(pn1,BorderLayout.NORTH);//向窗口添加面板,窗口默认布局为BorderLayout(注释3)add(pn2,BorderLayout.SOUTH);this.setSize(300,200);//设置窗口大小(注释4)this.setVisible(true);//显示窗口(填空4)}}【运行结果】3、编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。首先创建线程类CalPrime,在该类中实现素数个数的计算。然后在主类的main()方法中创建线程类对象并启动线程。importjava.io.*;publicclassX9_3_1{publicstaticvoidmain(String[]args)throwsIOException{CalPrimethr1=newCalPrime(2,100000);//第二个线程计算100000~200000之间的素数的个数(注释5)CalPrimethr2=newCalPrime(10000,200000);thr1.start();thr2.start();}}第6页共8页classCalPrimeextendsThread{(填空5)intfrom,to,count=0;publicCalPrime(intfrom,intto){//构造方法this.from=from;this.to=to;}publicvoidrun(){(填空6)for(inti=from;ito;i++){intm=(int)Math.sqrt(i);booleanisPrime=true;for(intj=2;j=m;j++){if(i%j==0){isPrime=false;break;}}//如果该数为素数,素数个数加1(注释6)if(isPrime)count++;}System.out.println(from+~+to+之间的素数个数为:+count);}}四、程序设计题(请将正确的答案按要求填在答题纸上;每题10分,共20分)1、编写一个程序,其功能是将两个文件的内容合并到一个文件中。第一步:采用面向字符的文件流读出文件内容,使用FileReader类的read()方法,写文件内容使用FileWriter类的write()方法。第二步:通过键盘方式输入要合并的两个源文件的文件名以及合并后的新文件名。第三步:将两个源文件内容分别读出并写入到目标文件中。【参考程序】importjava.io.*;publicclassX8_3_2{publicstaticvoidmain(Stringargs[]){InputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);Filefin1,fin2,fout;try{System.out.print(Inputthefirstinputfilename:);fin1=newFile(br.readLine());if(!fin1.exists()){第7页共8页System.out.println(Thefiledoesn'texist!);System.exit(0);}System.out.print(Inputthesecondinputfilename:);fin2=newFile(br.readLine());if(!fin2.exists()){System.out.println(Thefiledoesn'texist!);System.exit(0);}System.out.print(Inputtheoutputfilename:);fout=newFile(br.readLine());if((newJoinFiles(fin1,fin2,fout))!=null){//合并文件System.out.print