试题第1页(共16页)福建农林大学考试试卷(A)卷2012——2013学年第二学期课程名称:JavaProgramming考试时间120Minutes专业2010年级班学号姓名题号一二三四五总得分得分评卷人签字复核人签字得分一、选择题(每题1分,共10分)1.下面变量声明中存在错误的是(b)Idoublex=14.7;inty=x;IIdoublex=14.7;inty=(int)x;IIIintx=14;doubley=x;(A)None(B)Ionly(C)IIonly(D)IIIonly2.下面程序片段的输出是(d)intnum=22;if(num0)if(num%5==0)System.out.println(num);elseSystem.out.println(num+isnegative);(A)22(B)4(C)2isnegative(D)22isnegative试题第2页(共16页)3.下面程序片段的输出是(d)intx=10,y=0;while(x5){y=3;while(yx){y*=2;if(y%x==1)y+=x;}x-=3;}System.out.println(x++y);(A)16(B)712(C)-312(D)4124.我们用字符0,1,...,8,9,A,B,C,D,E,F来表示16进制数,其中A=10,B=11,...,F=15,2位16进制数(如14,3A等)能表示的最大10进制数是(c)(A)32(B)225(C)255(D)2565.类Clown有一个无参构造函数,类型为ArrayListClown的变量list已经初始化,下面会产生IndexOutOfBoundsException错误的是(a)(A)for(inti=0;i=list.size();i++)list.set(i,newClown());(B)list.add(list.size(),newClown());(C)Clownc=list.get(list.size());(D)Clownc=list.remove(list.size());6.下面接口定义存在的错误是(d)publicinterfaceBad{voidsomeMethod(Stringpassword){System.out.println(Psst!Thepasswordis+password);}}(A)Amethodinaninterfaceshouldbedeclaredpublic.(B)Amethodinaninterfaceshouldbedeclaredabstract.(C)Thereshouldnotbeamethodimplementation.试题第3页(共16页)(D)Thereshouldbeaclassimplementationprovided.7.假设一个求N个数的平均数的算法存在语句average=sum/N,其中N和sum都是整数。在一个使用该算法的程序中,程序员忘记对N是否为0进行检查。如果N等于0,错误被发现的时刻是(d)(A)Atcompiletime(B)Atedittime(C)AssoonasthevalueofNisentered(D)Duringruntime8.Thisquestionisbasedonthefollowingdeclarations:StringstrA=CARROT,strB=Carrot,strC=car;假设大写字母小于小写字母,下面表达式为true的是(c)(A)strA.compareTo(strB)0&&strB.compareTo(strC)0(B)strC.compareTo(strB)0&&strB.compareTo(strA)0(C)strB.compareTo(strC)0&&strB.compareTo(strA)0(D)!(strA.compareTo(strB)==0)&&strB.compareTo(strA)09.RefertothenextIntInRangemethodbelow:/*Postcondition:返回一个low到high的随机整数(包括low和high).*/publicintnextIntInRange(intlow,inthigh){return/*expression*/}Which/*expression*/willalwaysreturnavaluethatsatisfiesthepostcondition?(c)(A)(int)(Math.random()*high)+low;(B)(int)(Math.random()*(high-low))+low;(C)(int)(Math.random()*(high-low+1))+low;(D)(int)(Math.random()*(high+low))+low;10.在一个继承关系中,Novel和Textbook都是Book的子类,下面关于这些类的描述中,错误的是(d)(A)TheTextbookclasscanhaveprivateinstancevariablesthatareneitherinBooknorNovel.试题第4页(共16页)(B)Eachoftheclasses--Book,Novel,andTextbook--canhaveamethodshelfLife,whosecodeinBookandNovelisidentical,butdifferentfromthecodeinTextbook.(C)IftheBookclasshasprivateinstancevariablesmyTitleandmyAuthor,thenNovelandTextbookinheritthembutcannotdirectlyaccessthem.(D)BothNovelandTextbookinherittheconstructorsinBook.得分二、是非题(每小题1分,共10分)1.Anidentifiercannotbeareservedword.(y)2.Thekeywordbreakisoptionalinaswtichstatement.(y)3.Thecontinuekeywordimmediatelyendstheinnermostloop,whichcontainsthecontinue.(n)4.Eachtimeamethodiscalled,thesystemstoresparametersandlocalvariablesinaspaceknownasaheap.(n)5.Whenanarrayiscreated,itselementsareassignedthedefaultvalue0forthenumericprimitivedatatypes.(y)6.Onceitiscreated,animutableobjectcannotbemodified.(y)7.JAppletisaheavyweightcomponent(y)8.TheSerializableinterfaceisamarkerinterface.(Y)9.ClassNotFoundExceptionisakindofcheckedexception(y)10.MouseEventisakindofsemanticevent.试题第5页(共16页)(n)得分三、解答题(本大题共6小题,每小题5分,共30分)1.用java语句实现下面的伪代码:Step1:声明一个int类型的变量r,并初始化为1;Step2:声明一个double类型的常量PI,并初始化为3.14;Step3:声明一个double类型的变量a,把PI*r*r赋给a;Step4:在标准输出设备上输出a的值;写成Step4的运行结果。Step1:intr=1;Step2:finaldoublePI=3,14;Step3:doublea=PI*r*r;;Step4:System.out.println(“a=”+a);运行结果:a=3.142.用switch语句改写下面的if语句:if(a==1)x+=5;elseif(a==2)x+=10;elseif(a==3)x+=16;elsex+=34;switch(a){case1:x+=5;break;case2;x+=10;break;case3:x+=16;break;default:x+=34;}试题第6页(共16页)3.假设类Person的定义如下所示:publicclassPerson{privateStringname;publicPerson(Stringname){this.name=name;}下面语句创建一个名为tom的Person:Persontom=newPerson(“Tom”);假设tom是一个局部变量,画出局部变量tom及它所引用的对象在内存(stack和heap)中的表示。4.完成下面的静态方法min,它返回数组参数data中的最小元素的值:publicstaticdoublemin(double[]data){intdoublemin;min=data[0];for(inti=0;idata.length;i++){if(mindata[i])min=data[i];}returnmin;}5.用一个例子来说明类之间的聚集关系(从描述的关系、类图的表示和java代码实现3个方面进行描述)。描述的关系:聚集关系表示一个类作为另一个类的属性。即一个类里面有另一个类。试题第7页(共16页)类图的表示:java代码实现:classA{classA(){}}classB{privateAa;publicmethod(){}}B聚集A6.根据下面的代码,从事件源、事件、侦听器对象、侦听器接口和注册侦听器对象的角度,说明如何编写事件响应程序。publicclassSimpleEventDemoextendsJFrame{/**CreatesanewinstanceofSimpleEventDemo*/publicSimpleEventDemo(){JButtonjbtOk=newJButton(OK);setLayout(newFlowLayout());add(jbtOk);ActionListenerlistener=newOKListener();jbtOk.addActionListener(listener);}}classOKListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){javax.swing.JOptionPane.showMessageDialog(null,YouclickbuttonOK);}}试题第8页(共16页)得分四、算法阅读题(本大题共1小题,每空2分,共10分)publicclassShapesTest{publicstaticvoidmain(String[]args){Shape[]shapes=newShape[10];for(inti=0;ishapes.length;i++){shapes[i]=newCircle(Math.random()*100);}Array.sort(shapes);//对数组shapes内的对象进行排序System.out.println(search(shapes,shapes[5]));}publicstaticintsearch(Shape[]shapes,Shapeshape){//二分查找intlow,high,mid;low=0;high=shapes.length-1;while(low=high){mid=(low+high)/2;if(shapes[mid].compareTo(shape)==0)