• 258.46 KB
  • 2022-04-22 11:52:10 发布

《Java面向对象程序设计》思考题及答案.pdf

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《Java面向对象编程》思考题及答案.........................................................................................................................................................................2第1章面向对象的开发方法概述...............................................................................2第2章第一个Java应用.............................................................................................3第3章数据类型和变量...............................................................................................6第4章操作符..............................................................................................................8第5章流程控制........................................................................................................10第6章继承................................................................................................................13第7章Java语言中的修饰符....................................................................................17第8章接口................................................................................................................21第9章异常处理........................................................................................................23第10章类的生命周期...............................................................................................27第11章对象的生命周期...........................................................................................28第12章内部类..........................................................................................................30第13章多线程与并发...............................................................................................33第14章数组..............................................................................................................35第15章Java集合......................................................................................................37第16章输入输出......................................................................................................39第17章图形用户界面...............................................................................................41第18章Swing组件...................................................................................................43第19章Java常用类..................................................................................................44 《Java面向对象编程》思考题及答案v1.0作者:孙卫琴技术支持网址:www.javathinker.org制作时间:2009/2/10备注:以下思考题来自《Java面向对象编程》第一版,并且修改了原书中部分思考题内容中的错误或者作了一些调整。因此,如果此处列出的思考题与原书中列出的思考题不一致时,以此处的思考题为准。如果大家对思考题以及答案有异议,欢迎到JavaThinker论坛的Java分论坛上指正:http://www.javathinker.org/bbs/topic.jsp?db=7&topic=5623http://www.javathinker.org/bbs/topic.jsp?db=7第1章面向对象的开发方法概述1.面向对象的软件开发有哪些优点?[答案]面向对象的软件开发具有以下优点:l把软件系统看成是各种对象的集合,这更接近人类的自然思维方式。l软件需求的变动往往是功能的变动,而功能的执行者——对象一般不会有大的变化。这使得按照对象设计出来的系统结构比较稳定。l对象包括属性(数据)和行为(方法),对象把数据以及方法的具体实现方式一起封装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。l支持封装、抽象、继承和多态,提高了软件的可重用性、可维护性和可扩展性。2.在软件系统中,为什么说一个孤立的不对外提供任何服务的对象是没有意义的?[答案]开发软件系统的目的,就是为了让它提供特定服务。从使用者的角度出发,整个软件系统就是一个服务提供者。大的系统由多个子系统组合而成。在系统内部,每个子系统(对象或对象的组合)也都是服务提供者,它们为其它子系统或者所属的大系统提供服务,各个系统之间通过发送消息来互相获得服务。因此,一个孤立的不对外提供任何服务的系统是没有任何意义的。3.列举一些现实生活中的例子,来说明什么是依赖关系、什么是聚集关系,以及什么是关联关系。[答案]依赖关系:人依赖食物;电视机依赖电;理发师依赖剪刀和吹风机;鱼依赖水聚集关系:电脑由显示器、主机和键盘等聚集而成;关联关系:公司和员工;银行和客户;老公和老婆4.列举一些现实生活中的例子,来说明什么是封装,什么是接口。[答案] 封装:电脑主机的组件被封装在机箱内;电视机的内部构件也被封装在大壳子内接口:电脑的键盘上的按键是电脑向人提供的接口;电脑上的USB插口是向移动硬盘提供的接口;电脑上的光盘驱动器是向光盘提供的接口。5.抽象的最主要的特征是什么?[答案]抽象是指从特定角度出发,从已经存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。抽象是一种由具体到抽象、由复杂到简洁的思维方式。6.在建立对象模型时,要经历哪些抽象思维过程?[答案](1)从问题领域的事物到软件模型中对象的抽象(2)从对象到类的抽象(3)从子类到父类的抽象7.类就是程序员自定义的类型,这句话对吗?[答案]对的。对象模型中的类可看作是开发人员自定义的数据类型,Java虚拟机的运行时环境封装了把自定义的数据类型映射到计算机的内置数据类型的过程,使得开发人员不必受到计算机的内置数据类型的限制,对任意一种问题领域,都可以方便的根据识别对象、再进行分类(创建任意的数据类型)的思路来建立对象模型。8.小王本来体重70Kg,经过减肥,体重降到45Kg,试从这个问题领域中识别对象、类、属性、行为、状态,和状态变化。[答案]对象:小王类:人属性:体重行为:减肥状态:减肥前状态:小王体重70Kg;减肥后状态:小王体重45Kg状态变化:减肥行为使得小王的体重发生了变化9.在UML框图中,哪些框图描述了系统的动态结构,哪些框图描述了系统的静态结构?[答案]状态转换图、时序图和协作图则构成了系统的动态结构;用例图、类框图、组件图和部署图等四个图形,构成了系统的静态结构;第2章第一个Java应用1.把一个类放在包里有什么作用?[答案]把类放到特定的包中,有三大作用:(1)能够区分名字相同的类。 (2)有助于实施访问权限控制。(3)有助于划分和组织Java应用中的各个类。2.JavaDoc文档是不是为软件的终端用户提供的使用指南?[答案]不是Java类通过JavaDoc文档来对外公布自身的用法,JavaDoc文档是基于HTML格式的帮助文档。JavaDoc文档主要是供Java开发人员看的。3.对于com.abc.dollapp.AppMain类,使用以下命令进行编译,编译出来的.class文件位于什么目录下?java–dC:classes–sourcepathC:srcC:srccomabcdollappAppMain.java[答案]C:classescomabcdollappAppMain.java4.对于以上编译出来的AppMain类,以下哪个java命令能正确地运行它?a)javaC:classescomabcdollappAppMain.classb)java–classpathC:classesAppMainc)java–classpathC:classescomabcdollappAppMaind)java–classpathC:classescom.abc.dollapp.AppMain[答案]d5.以下哪个main()方法的声明能够作为程序的入口方法?a)publicstaticvoidmain()b)publicstaticvoidmain(String[]string)c)publicstaticvoidmain(Stringargs)d)staticpublicintmain(String[]args)e)staticvoidmain(String[]args)[答案]b6.假定以下程序代码都分别放在MyClass.java文件中,哪些程序代码能够编译通过?a)importjava.awt.*;packagemyPackage;classMyClass{}b)packagemyPackage;importjava.awt.*;classMyClass{}c)/*Thisisacomment*/packagemyPackage;importjava.awt.*;publicclassMyClass{} [答案]b,c7.对于以下Myprog类,运行命令“javaMyproggoodmorning”,将会得到什么打印结果?publicclassMyprog{publicstaticvoidmain(Stringargv[]){System.out.println(argv[2]);}}[答案]将抛出java.lang.ArrayIndexOutOfBoundsException异常8.下面哪些是Java的关键字?a)defaultb)NULLc)Stringd)throwse)longf)true[答案]a,d,e,f9.当AppMain类的main()方法创建了五个Doll对象时,运行时数据据区的数据是如何分布的?参照2.4节的图2-14,画出此时运行时数据据区的状态图。[答案]10.下面哪些是合法的Java标识符?a)#_poundb)_underscorec)5Interstated)Interstate5 e)_5_f)class[答案]b,d,e第3章数据类型和变量1.对于以下程序,运行“javaAbs”,将得到什么打印结果?publicclassAbs{staticinta=0x11;staticintb=0011;staticintc="u0011";staticintd=011;publicstaticvoidmain(Stringargs[]){System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}}[答案]打印以下内容:1791792.以下哪段程序能正确编译通过?a)chara="a";charb=1;charc=08;b)inta="a";c)longa="u00FF";d)chara="u0FF";e)chard="d";[答案]b,c3.下面哪段代码能编译通过?a)shortmyshort=99S;b)Stringname="ExcellenttutorialMrGreen";c)charc=17c;d)intz=015;[答案]d 4.字符“A”的Unicode编码为65。下面哪些代码正确定义了一个代表字符“A”的变量?a)charch=65;b)charch="65";c)charch="u0041";d)charch="A";e)charch="A";[答案]c,d5.以下代码共创建了几个对象?Strings1=newString("hello");Strings2=newString("hello");Strings3=s1;Strings4=s2;[答案]2个对象6.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassTest{staticintmyArg=1;publicstaticvoidmain(String[]args){intmyArg;System.out.println(myArg);}}[答案]编译出错,main()方法中的myArg局部变量没有被初始化。7.对于以下程序,运行“javaMysteryMightyMouse”,得到什么打印结果?publicclassMystery{publicstaticvoidmain(String[]args){Changerc=newChanger();c.method(args);System.out.println(args[0]+""+args[1]);}staticclassChanger{voidmethod(String[]s){Stringtemp=s[0];s[0]=s[1];s[1]=temp;}}}[答案]打印:MouseMighty8.对于以下程序,运行“javaPass”,得到什么打印结果? publicclassPass{staticintj=20;publicstaticvoidmain(Stringargv[]){inti=10;Passp=newPass();p.amethod(i);System.out.println(i);System.out.println(j);}publicvoidamethod(intx){x=x*2;j=j*2;}}[答案]打印:1040第4章操作符1.以下哪些程序代码能够编译通过?a)inti=0;if(i){System.out.println("Hello");}b)booleanb1=true;booleanb2=true;if(b1==b2){System.out.println("Sotrue");}c)inti=1;intj=2;if(i==1||j==i)System.out.println("OK");d)inti=1;intj=2;if(i==1&|j==2)System.out.println("OK");[答案]b,c2.运行以下程序,得到什么打印结果?System.out.println(1>>>1);System.out.println(-1>>31);System.out.println(2>>1); System.out.println(1<<1);[答案]打印:0-1123.以下temp变量的最终取值是什么?longtemp=(int)3.9;temp%=2;[答案]14.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?if(5&7>0&&5|2)System.out.println("true");[答案]不能编译通过5.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?intoutput=10;booleanb1=false;if((b1==true)&&((output+=10)==20)){System.out.println("Weareequal"+output);}else{System.out.println("Notequal!"+output);}[答案]打印:Notequal!106.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?intoutput=10;booleanb1=false;if((b1=true)&&((output+=10)==20)){System.out.println("Weareequal"+output);}else{System.out.println("Notequal!"+output);}[答案]打印:Weareequal207.对于以下声明:Strings1=newString("Hello");Strings2=newString("there");Strings3=newString();下面哪个是合法的操作?a)s3=s1+s2;b)s3=s1-s2;c)s3=s1&s2;d)s3=s1&&s2;[答案]a8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果? publicclassConv{publicstaticvoidmain(Stringargv[]){Convc=newConv();Strings=newString("ello");c.amethod(s);}publicvoidamethod(Strings){charc="H";c+=s;System.out.println(c);}}[答案]编译出错,“c+=s”这行代码不正确。9.运行以下代码,得到什么打印结果?System.out.println(6+6+"x");System.out.println("x"+6+6);[答案]打印:12xx66第5章流程控制1.运行以下代码,得到什么打印结果?inti=3;intj=0;doublek=3.2;if(i0;i++,j--){}c)inti,k;for(i=0,k=9;(i<10&&k>0);i++,k--){}d)inti,j;for(i=0;j=10;i<10;i++,j--){}[答案]c4.运行以下代码,得到什么打印结果?inti=1;switch(i){default:System.out.println("default");case0:System.out.println("zero");break;case1:System.out.println("one");case2:System.out.println("two");}[答案]打印:onetwo5.以下哪段代码是合法的?a)floatx=1;switch(x){case1:System.out.println("ok");}b)longy=1;switch(y){case1:System.out.println("ok");break;}c)bytex=1;switch(x){case1/1:System.out.println("ok"); }d)intx=1;intc=1;switch(c){casex:System.out.println("ok");break;}e)shortx=1;switch(x){case3.2/3:System.out.println("ok");break;}f)shortx=1;switch(x){case1,2,3:System.out.println("ok");break;}[答案]c6.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassMySwitch{publicstaticvoidmain(Stringargv[]){MySwitchms=newMySwitch();ms.amethod();}publicvoidamethod(){for(inta=0,b=0;a<2;b=++a,System.out.println("b="+b)){System.out.println("a="+a);}}}[答案]打印:a=0b=1a=1b=27.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?intx=0;one:while(x<10){two:System.out.println(++x); if(x>3)breaktwo;}[答案]编译出错。“breaktwo”语句出错。8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassHope{publicstaticvoidmain(Stringargv[]){Hopeh=newHope();}protectedHope(){inti=1;do{System.out.println(i);}while(++i<3);}}[答案]打印12第6章继承1.继承有哪些优点和缺点?[答案]优点:提高程序代码的可重用性;提高系统的可扩展性缺点:如果继承树非常复杂、或者随便扩展本来不是专门为继承而设计的类,反而会削弱系统的可扩展性和可维护性。2.继承与组合有哪些异同?[答案]相同点:组合与继承都是提高代码可重用性的手段。不同点:组合关系和继承关系相比,前者的最主要优势是不会破坏封装,当类A与类C之间为组合关系时,类C封装实现,仅向类A提供接口。而当类A与类C之间为继承关系时,类C会向类A暴露部分实现细节。在软件开发阶段,组合关系不能比继承关系减少编码量,但是到了软件维护阶段,由于组合关系使系统具有较好的松耦合性,因此使得系统更加容易维护。组合关系的缺点是比继承关系要创建更多的对象。3.方法覆盖必须满足哪些规则?[答案]以下三个是方法覆盖必须满足的主要规则:(1)子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致。(2)子类方法不能缩小父类方法的访问权限。(3)子类方法不能抛出比父类方法更多的异常。4.以下哪些代码能够编译通过? a)classFruit{}publicclassOrangeextendsFruit{publicstaticvoidmain(String[]args){Fruitf=newFruit();Orangeo=f;}}b)classFruit{}publicclassOrangeextendsFruit{publicstaticvoidmain(String[]args){Orangeo=newOrange();Fruitf=o;}}c)interfaceFruit{}publicclassAppleimplementsFruit{publicstaticvoidmain(String[]args){Fruitf=newFruit();Applea=f;}}d)interfaceFruit{}publicclassAppleimplementsFruit{publicstaticvoidmain(String[]args){Applea=newApple();Fruitf=a;}}e)interfaceFruit{}classAppleimplementsFruit{}classOrangeimplementsFruit{}publicclassMyFruit{publicstaticvoidmain(String[]args){Orangeo=newOrange();Fruitf=o;Applea=f;}}[答案]b,d5.对于以下类:interfaceIFace{}classCFaceimplementsIFace{}classBase{} publicclassObRefextendsBase{publicstaticvoidmain(Stringargv[]){ObRefob=newObRef();Baseb=newBase();Objecto1=newObject();IFaceo2=newCFace();}}下面哪些代码能够编译通过?a)o1=o2;b)b=ob;c)ob=b;d)o1=b;[答案]a,b,d6.对于以下类:classA{}classBextendsA{}classCextendsA{}publicclassQ3ae4{publicstaticvoidmain(Stringargs[]){Ax=newA();By=newB();Cz=newC();//此处插入一条语句}}下面哪些语句放到以上插入行,将导致运行时异常?a)x=y;b)z=x;c)y=(B)x;d)z=(C)y;e)y=(A)y;[答案]c7.下面哪些是合法的语句?a)Objecto=newString("abcd");b)Booleanb=true;c)Panelp=newFrame();d)Appleta=newPanel();e)Panelp=newApplet();[答案]a,e8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果? Objecto=newString("abcd");Strings=o;System.out.println(s);System.out.println(o);[答案]编译出错。“Strings=o”语句出错。9.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?classBase{abstractpublicvoidmyfunc();publicvoidanother(){System.out.println("Anothermethod");}}publicclassAbsextendsBase{publicstaticvoidmain(Stringargv[]){Absa=newAbs();a.amethod();}publicvoidmyfunc(){System.out.println("Myfunc");}publicvoidamethod(){myfunc();}}[答案]编译出错。Base类必须声明为抽象类,因为它包含myfunc()抽象方法。10.以下哪些代码是合法的?a)publicabstractmethod();b)publicabstractvoidmethod();c)publicabstractvoidmethod(){}d)publicvirtualvoidmethod();e)publicvoidmethod()implementsabstract;[答案]b11.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?abstractclassBase{abstractpublicvoidmyfunc();publicvoidanother(){System.out.println("Anothermethod");}}publicclassAbsextendsBase{publicstaticvoidmain(Stringargv[]){Absa=newAbs();a.amethod();} publicvoidmyfunc(){System.out.println("Myfunc");}publicvoidamethod(){myfunc();}}[答案]打印“Myfunc”12.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?importjava.io.FileNotFoundException;classBase{publicstaticvoidamethod()throwsFileNotFoundException{}}publicclassExcepDemoextendsBase{publicstaticvoidmain(Stringargv[]){ExcepDemoe=newExcepDemo();}publicstaticvoidamethod(){}protectedExcepDemo(){System.out.println("Pausing");amethod();System.out.println("Continuing");}}[答案]打印“PausingContinuing”13.对于以下代码:publicclassTester{publiclongsum(longa,longb){returna+b;}//此处插入一行}下面哪些语句放到以上插入行,可以编译通过?a)publicintsum(inta,intb){returna+b;}b)publicintsum(longa,longb){return0;}c)abstractintsum();d)privatelongsum(longa,longb){returna+b;}e)publiclongsum(longa,intb){returna+b;}[答案]a,e第7章Java语言中的修饰符1.以下哪些是Java修饰符?a)publicb)privatec)friendly d)transiente)vagrant[答案]a,b,d2.作为程序入口的main()方法可以用哪些修饰符来修饰?a)privateb)finalc)staticd)inte)abstract[答案]b,c3.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?privateclassBase{}publicclassVis{transientintiVal;publicstaticvoidmain(Stringelephant[]){}}[答案]编译出错。Base类不能用private修饰。4.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?classA{privateintsecret;}publicclassTest{publicintmethod(Aa){returna.secret++;}publicstaticvoidmain(Stringargs[]){Testtest=newTest();Aa=newA();System.out.println(test.method(a));}}[答案]编译出错。Test类的method()方法不能访问类A的secret变量。5.哪个访问控制符的访问级别最大?a)privateb)publicc)protectedd)默认[答案]b 6.如果一个方法只能被当前类以及同一个包中的类访问,这个方法采用什么访问级别?[答案]默认访问级别7.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?privateclassBase{Base(){inti=100;System.out.println(i);}}publicclassPriextendsBase{staticinti=200;publicstaticvoidmain(Stringargv[]){Prip=newPri();System.out.println(i);}}[答案]编译出错。Base类不能用private修饰。8.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassMyAr{publicstaticvoidmain(Stringargv[]){MyArm=newMyAr();m.amethod();}publicvoidamethod(){staticinti;System.out.println(i);}}[答案]编译出错。变量i是局部变量,不能用static修饰。9.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?classTest{intx=5;staticStrings="abcd";publicstaticvoidmethod(){System.out.println(s+x);}}[答案]编译出错。在静态method()方法中不能直接访问实例变量x。10.对于以下程序,运行“javaStaticTest”,得到什么打印结果?publicclassStaticTest{static{System.out.println("Hithere");}publicvoidprint(){System.out.println("Hello"); }publicstaticvoidmain(Stringargs[]){StaticTestst1=newStaticTest();st1.print();StaticTestst2=newStaticTest();st2.print();}}[答案]打印以下内容:HithereHelloHello11.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassTest{finalintx=0;Test(){x=1;}finalintaMethod(){returnx;}}[答案]编译出错。在Test()构造方法中不能再为常量x赋值。12.以下代码能否编译通过?publicclassFinalTest{finalintq;finalintw=0;FinalTest(){q=1;}FinalTest(intx){q=x;}}[答案]编译通过。13.以下代码能否编译通过?publicclassFinalTest{finalintq;finalintw=0;FinalTest(){this(0);q=1;} FinalTest(intx){q=x;}}[答案]编译出错。“q=x;”语句出错。FinalTest(intx)构造方法实际上为变量q赋了两次值。第8章接口1.接口与抽象类有哪些异同点?[答案]相同点:(1)代表系统的抽象层。(2)都不能被实例化。(3)都能包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不必提供具体的实现。不同点:(1)在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,这能提高代码的可重用性,这是抽象类的优势所在;而接口中只能包含抽象方法。(2)一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在。2.区分接口与抽象类分别在什么场合使用?[答案]总的使用原则如下:(1)用接口作为系统与外界(即令一个系统)交互的窗口。(2)用抽象类来定制系统中的扩展点。可以把抽象类看作是介于“抽象”和“实现”之间的半成品,抽象类力所能及的完成了部分实现,但还有一些功能有待于它的子类去实现。3.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?importjava.awt.event.*;importjava.awt.*;publicclassMyWcextendsFrameimplementsWindowListener{publicstaticvoidmain(Stringargv[]){MyWcmwc=newMyWc();}publicvoidwindowClosing(WindowEventwe){System.exit(0);}//EndofwindowClosingpublicvoidMyWc(){setSize(300,300);setVisible(true); }}//Endofclass[答案]编译出错。MyWc类没有实现WindowListener接口中的所有方法,因此MyWc类应该声明为抽象类。4.以下代码能否编译通过?interfaceA{intx=0;A(){x=5;}A(ints){x=s;}}[答案]编译出错。接口中不能有构造方法。5.接口中的方法可以使用哪些修饰符?a)staticb)privatec)synchronisedd)protectede)public[答案]e6.以下是接口I的定义:interfaceI{voidsetValue(intval);intgetValue();}以下哪些代码能编译通过?(a)classAextendsI{intvalue;voidsetValue(intval){value=val;}intgetValue(){returnvalue;}}b)interfaceBextendsI{voidincrement();}c)abstractclassCimplementsI{intgetValue(){return0;}abstractvoidincrement();} d)interfaceDimplementsI{voidincrement();}(e)classEimplementsI{intvalue;publicvoidsetValue(intval){value=val;}}[答案]b7.以下代码能否编译通过?interfaceA{intx;voidA(ints){x=s;}}[答案]编译出错。必须为常量x赋值;方法A(ints)应该是抽象方法。第9章异常处理1.throw和throws关键字有什么区别?[答案]throw用于在程序代码中抛出异常对象;throws用于声明方法可能抛出的异常。2.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?importjava.io.*;classBase{publicstaticvoidamethod()throwsFileNotFoundException{}}publicclassExcepDemoextendsBase{publicstaticvoidmain(Stringargv[]){ExcepDemoe=newExcepDemo();}publicstaticvoidamethod(){}protectedExcepDemo()throwsIOException{DataInputStreamdin=newDataInputStream(System.in);System.out.println("Pausing");din.readChar();System.out.println("Continuing");this.amethod();}} [答案]编译出错。ExcepDemo()构造方法声明抛出IOException,因此在main()方法中调用ExcepDemo()构造方法时,要么捕获IOException,要么在方法声明中声明抛出该异常。3.try代码块后面可以只跟finally代码块,这句话对吗?[答案]正确4.对于以下程序,运行“javaRethrow”,将得到什么打印结果?publicclassRethrow{publicstaticvoidg()throwsException{System.out.println("Originatesfromg()");thrownewException("thrownfromg()");}publicstaticvoidmain(String[]args){try{g();}catch(Exceptione){System.out.println("Caughtinmain");e.printStackTrace();thrownewNullPointerException("frommain");}}}[答案]打印如下内容:Originatesfromg()Caughtinmainjava.lang.Exception:thrownfromg()atRethrow.g(Rethrow.java:4)atRethrow.main(Rethrow.java:8)Exceptioninthread"main"java.lang.NullPointerException:frommainatRethrow.main(Rethrow.java:12)5.假定方法f()可能会抛出Exception,以下哪些代码是合法的?a)publicstaticvoidg(){try{f();}catch(Exceptione){System.out.println("Caughting()");thrownewException("thrownfromg()");}}b)publicstaticvoidg(){try{f();}catch(Exceptione){System.out.println("Caughting()"); thrownewNullPointerException("thrownfromg()");}}c)publicstaticvoidg()throwsThrowable{try{f();}catch(Exceptione){System.out.println("Insideg()");throwe.fillInStackTrace();}}publicstaticvoidmain(String[]args){try{g();}catch(Exceptione){System.out.println("Caughtinmain");e.printStackTrace();}}[答案]b6.在Java中,Throwable是所有异常类的祖先,这句话对吗?[答案]正确7.在执行trythis()方法时,如果problem()方法抛出Exception,程序将打印什么结果?publicvoidtrythis(){try{System.out.println("1");problem();}catch(RuntimeExceptionx){System.out.println("2");return;}catch(Exceptionx){System.out.println("3");return;}finally{System.out.println("4");}System.out.println("5");}[答案]打印:1348.以下代码能否编译通过,假如能编译通过,运行“javaQb4ab”时得到什么打印结果?classMyExceptionextendsException{} publicclassQb4ab{publicvoidfoo(){try{bar();}finally{baz();}catch(MyExceptione){}}publicvoidbar()throwsMyException{thrownewMyException();}publicvoidbaz()throwsRuntimeException{thrownewRuntimeException();}}[答案]编译出错。foo()方法中,catch代码块应该紧跟在try代码块后面。9.对于以下代码:importjava.io.*;publicclassTh{publicstaticvoidmain(Stringargv[]){Tht=newTh();t.amethod();}publicvoidamethod(){try{ioCall();}catch(IOExceptionioe){}}}以下哪些是合理的ioCall()方法的定义?a)publicvoidioCall()throwsIOException{DataInputStreamdin=newDataInputStream(System.in);din.readChar();}b)publicvoidioCall()throwIOException{DataInputStreamdin=newDataInputStream(System.in);din.readChar();}c)publicvoidioCall(){DataInputStreamdin=newDataInputStream(System.in);din.readChar();}d)publicvoidioCallthrowsIOException(){DataInputStreamdin=newDataInputStream(System.in);din.readChar();}[答案]a 第10章类的生命周期1.类的初始化有哪些时机?[答案]类的初始化有以下时机:(1)创建类的实例。创建类的实例的途径包括:用new语句创建实例,或者通过反射、克隆以及反序列化手段来创建实例。(2)调用类的静态方法。(3)访问某个类或接口的的静态变量,或者对该静态变量赋值。(4)调用JavaAPI中某些反射方法,比如调用Class.forName("Worker")方法,假如Worker类还没有被初始化,那么forName()方法就会初始化Worker类,然后返回代表这个Worker类的Class实例。forName()方法是java.lang.Class类的静态方法。(5)初始化一个类的子类。例如对Sub类的初始化,可看作是对它父类Base类的主动使用,因此会先初始化Base类。(6)Java虚拟机启动时被标明为启动类的类。例如对于“javaSample”命令,Sample类就是启动类,Java虚拟机会先初始化它。2.类的加载采用父亲委托机制,它有什么优点?[答案]父亲委托机制的优点是能使提高软件系统的安全性。因为在此机制下,用户自定义的类加载器不可能加载应该由父加载器加载的可靠类,从而防止不可靠甚至恶意的代码代替由父加载器加载的可靠代码。3.类在什么情况下被卸载?[答案]当代表一个类(以Sample类为例)的java.lang.Class对象不再被引用,即不可触及,那么Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期。由此可见,一个类何时被卸载,取决于代表它的Class对象何时结束生命周期。4.什么叫运行时包?它有什么优点?[答案]由同一类加载器加载的属于相同包的类组成了运行时包。运行时包的优点在于,只有属于同一运行时包的类才能互相访问包可见(即默认访问级别)的类和类成员。这样的限制能避免用户自定义的类冒充核心类库的类,去访问核心类库的包可见成员。5.对于以下代码,运行“javaSample”,将得到什么打印结果?publicclassSample{staticinta=1;static{a=2;}static{a=4;}publicstaticvoidmain(Stringargs[]){a++;System.out.println("a="+a);}}[答案]打印:a=5 第11章对象的生命周期1.以下类是否具有默认构造方法?publicclassCounter{intcurrent,step;publicCounter(intstartValue,intstepValue){set(startValue);setStepValue(stepValue);}publicintget(){returncurrent;}publicvoidset(intvalue){current=value;}publicvoidsetStepValue(intstepValue){step=stepValue;}}[答案]没有默认构造方法2.构造方法可以被哪些修饰符修饰?a)finalb)staticc)synchronizedd)nativee)private[答案]e3.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassHope{publicstaticvoidmain(Stringargv[]){Hopeh=newHope();}protectedHope(){for(inti=0;i<10;i++){System.out.println(i);}}}[答案]打印:01234567894.以下代码能否编译通过,假如能编译通过,运行“javaB”时得到什么打印结果?classA{inti;A(inti){this.i=i*2;}}publicclassBextendsA{publicstaticvoidmain(String[]args){Bb=newB(2);}B(inti){System.out.println(i);}} [答案]编译出错。类B的B(inti)要求父类A提供默认的构造方法。5.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassMystery{Strings;publicstaticvoidmain(String[]args){Mysterym=newMystery();m.go();}voidMystery(){s="constructor";}voidgo(){System.out.println(s);}}[答案]打印:null6.对于以下代码:classBase{Base(inti){System.out.println("baseconstructor");}Base(){}}publicclassSupextendsBase{publicstaticvoidmain(Stringargv[]){Sups=newSup();//One}Sup(){//Two}publicvoidderived(){//Three}}以下哪些选项使得运行“javaSup”时打印“baseconstructor”?a)在“//One”的地方加入一行“Base(10);”b)在“//One”的地方加入一行“super(10);”c)在“//Two”的地方加入一行“super(10);”d)在“//Three”的地方加入一行“super(10);”[答案]c7.java.lang.Class类没有public类型的构造方法,这句话对吗?[答案]对 8.以下代码能否编译通过?classA{publicA(){}publicA(inti){this();}}classBextendsA{publicbooleanB(Stringmsg){returnfalse;}}classCextendsB{privateC(){super();}publicC(Stringmsg){this();}publicC(inti){}}[答案]可以编译通过。第12章内部类1.在类的方法内部定义的内部类可以访问外部类的所有成员变量,这句话对吗?[答案]对。2.内部类和外部类一样,可以实现接口,继承其他的类或被其他的类继承。这句话对吗?[答案]对。3.以下代码能否编译通过,假如能编译通过,运行“javaOuter”时得到什么打印结果?publicclassOuter{publicStringname="Outer";publicstaticvoidmain(Stringargv[]){Inneri=newInner();i.showName();}//EndofmainprivateclassInner{Stringname=newString("Inner");voidshowName(){System.out.println(name);}}//EndofInnerclass}[答案]编译出错。应该把“Inneri=newInner();”改为“Inneri=newOuter().newInner();”4.外部类不能被private、protected修饰,有些内部类可以被private、protected修饰。这句话对吗?[答案]对 5.匿名类也需要声明构造方法,这句话对吗?[答案]错。6.以下哪些是合法的代码?a)publicclassOuter{Stringa;publicclassInner{Stringb;publicvoidinnerMethod(){System.out.println("Enclosingais"+a);System.out.println("bis"+b);}}publicvoidcreateInner(){Inneri=newInner();i.innerMethod();}}b)publicclassOuter{Stringa;publicclassInner{Stringb;publicvoidinnerMethod(){System.out.println("Enclosingais"+a);System.out.println("bis"+b);}}publicvoidcreateInner(){Outer.Inneri=newOuter.Inner();i.innerMethod();}}c)publicclassOuter{Stringa;intk=1;publicstaticclassInner{Stringb;publicvoidinnerMethod(){ System.out.println("Enclosingais"+a);System.out.println("bis"+b);}}publicvoidcreateInner(){Outer.Inneri=newOuter.Inner();i.innerMethod();System.out.println("Thisisthevalueofk:"+k);}}d)publicclassOuter{staticStringa;staticintk;publicOuter(){k++;}publicclassInner{Stringb;publicvoidinnerMethod(){System.out.println("Enclosingais"+a);System.out.println("bis"+b);}publicvoidcreateInner(){Outer.Inneri=newOuter.Inner();i.innerMethod();System.out.println("Thisistheinstanceno:"+k);}}}[答案]a,b,d7.对于以下代码,method2()方法可否访问变量x、y或z?classA{publicintx;privateinty;classB{protectedvoidmethod1(){}classC{privatevoidmethod2(){}}}classDextendsA{ publicfloatz;}}[答案]可以直接访问变量x和y,但不能直接访问变量z。8.对于以下类,在Inner类的method()方法中,哪些语句是合法的?publicclassOuter{privateinta;publicstaticvoidmain(String[]args){}publicvoidgo(intw,finalintz){intp=w-z;finalintq=w+z;classInner{publicvoidmethod(){System.out.println("w="+w);//line1System.out.println("z="+z);//line2System.out.println("p="+p);//line3System.out.println("q="+q);//line4System.out.println("a="+a);//line5}}Innerthat=newInner();that.method();}}[答案]line2line4line5第13章多线程与并发1.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassWhatHappensimplementsRunnable{publicstaticvoidmain(String[]args){Threadt=newThread(this);t.start();}publicvoidrun(){System.out.println("hi");}}[答案]编译出错。在main()方法中不能直接引用“this”。2.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?publicclassBgroundextendsThread{publicstaticvoidmain(Stringargv[]){Bgroundb=newBground(); b.run();}publicvoidstart(){for(inti=0;i<10;i++){System.out.println("Valueofi="+i);}}}[答案]编译和运行都通过。运行时没有任何打印结果。3.以下哪些属于java.lang.Thread类的方法?a)yield()b)sleep(longmsec)c)go()d)stop()e)suspend()[答案]a,b,d,e4.在哪些情况线程会被阻塞?[答案]在以下情况,线程被阻塞:(1)当线程处于运行状态,如果执行了某个对象的wait()方法,Java虚拟机就会把线程放到这个对象的等待池中,线程被阻塞。(2)当线程处于运行状态,试图获得某个对象的同步锁时,如果该对象的同步锁已经被其它线程占用,Java虚拟机就会把这个线程放到这个对象的锁池中,线程被阻塞。。(3)线程执行了sleep()方法,或者调用了其他线程的join()方法,或者发出了I/O请求,就会被阻塞。5.有哪些原因会导致线程死亡?[答案]当线程退出run()方法,就进入死亡状态。线程有可能是正常执行完run()方法而退出,也有可能是遇到异常而退出,只要退出run()方法,线程就死亡。此外,线程的stop()方法也会让线程死亡。6.对于以下代码:publicclassRunTestimplementsRunnable{publicstaticvoidmain(String[]args){RunTestrt=newRunTest();Threadt=newThread(rt);//此处插入一行}publicvoidrun(){System.out.println("running");}voidgo(){start(1);}voidstart(inti){}} 下面哪些语句放到以上插入行,将使程序打印“running”?a)System.out.println("running");b)t.start();c)rt.go();d)rt.start(1);[答案]a,b7.以下代码能否编译通过,假如能编译通过,运行“javaTest”时得到什么打印结果?classRunHandler{publicvoidrun(){System.out.println("run");}}publicclassTest{publicstaticvoidmain(String[]args){Threadt=newThread(newRunHandler());t.start();}}[答案]编译出错。RunHandler类没有实现Runnable接口,因此不能作为Thread构造方法的参数。第14章数组1.以下哪段代码能显示最后一个命令行参数,并且当不存在命令行参数时,不会抛出异常?a)publicstaticvoidmain(Stringargs[]){if(args.length!=0)System.out.println(args[args.length-1]);}b)publicstaticvoidmain(Stringargs[]){try{System.out.println(args[args.length]);}catch(ArrayIndexOutOfBoundsExceptione){}}c)publicstaticvoidmain(Stringargs[]){intix=args.length;Stringlast=args[ix];if(ix!=0)System.out.println(last);} d)publicstaticvoidmain(Stringargs[]){intix=args.length-1;if(ix>0)System.out.println(args[ix]);}e)publicstaticvoidmain(Stringargs[]){try{System.out.println(args[args.length-1]);}catch(NullPointerExceptione){}}[答案]a2.执行完以下代码后,数组arr的各个元素的取值是什么?int[]arr={1,2,3};for(inti=0;i<2;i++)arr[i]=0;[答案]arr[0]=0,arr[1]=0,arr[2]=33.以下代码能否编译通过,假如能编译通过,运行时出现什么情况?publicclassMyAr{publicstaticvoidmain(Stringargv[]){int[]i=newint[5];System.out.println(i[5]);}}[答案]运行时抛出ArrayIndexOutOfBoundsException。4.如何获得数组myarray的长度?a)myarray.length()b)myarray.lengthc)myarray.sized)myarray.size()[答案]b5.以下哪些是合法的数组声明和初始化?a)intx[]={1,2,3};b)int[]x[]={{1,2,3},{1,2,3}};c)intx[3]={1,2,3};d)int[]x={0,0,0};e)charc[]={"a","b"};f)intx[]=newint[]{1,2,3};g)intx[]=newint[3]{1,2,3};h)intx[][]=newint[][2];i)intx[]=newint[-4];j)intx[]=newint[0]; [答案]a,b,d,e,f6.以下代码能否编译通过,假如能编译通过,运行时出现什么情况?publicclassAbs{staticint[]a=newint[4];staticObject[]o=newObject[4];staticStrings[];publicstaticvoidmain(Stringargs[]){System.out.println(a[0]);System.out.println(o[3]);System.out.println(s);}}[答案]打印:0nullnull7.以下代码能否编译通过,假如能编译通过,运行时出现什么情况?publicclassQ{publicstaticvoidmain(Stringargv[]){intanar[]=newint[]{1,2,3};System.out.println(anar[1]);}}[答案]打印28.以下哪些是合法的二维数组的声明和初始化?a)inta[][]=newint[10,10];b)inta[][]=newint[10][10];c)inta[10][10]=newint[10][10];d)int[][]a=newint[10][10];e)int[]a[]=newint[10][10];[答案]b,d,e第15章Java集合1.Set和List有哪些区别?[答案]Set(集)中的对象不按特定方式排序,并且没有重复对象。它的有些实现类能对集合中对象按特定方式排序。List(列表)中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。2.Collection与Collections有什么区别?[答案]Collection接口是Set和List接口的父接口,Collection接口中声明了适用于Java集合的通用方法。Collections类是一个集合实用类,它的一部分方法专门用于操纵List类型集合,还有一 部分方法可用于操纵所有的Collection类型或Map类型集合。3.利用LinkedList编写一个用于存取字符串的堆栈类MyStringStack,它实现了以下MyStringStackIFC接口:publicinterfaceMyStringStackIFC{/**取出堆栈尾部的一个字符串*/publicStringpop();/**向堆栈尾部加入一个字符串*/publicvoidpush(Stringstr);}[答案]参见MyStringStack.javaimportjava.util.LinkedList;publicclassMyStringStackimplementsMyStringStackIFC{privateLinkedListlist=newLinkedList();publicStringpop(){if(list.size()==0)returnnull;else{Stringstr=list.getLast();list.removeLast();returnstr;}}publicvoidpush(Stringstr){list.addLast(str);}publicstaticvoidmain(Stringargs[]){//演示堆栈的用法MyStringStackstack=newMyStringStack();stack.push("Tom");stack.push("Mike");stack.push("Linda");System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());}}4.比较Java数组、ArrayList和LinkedList在查询和存取元素方面的性能。[答案]参见以下表。假定把性能分为低和高两个档次。类型Java数组ArrayListLinkedList随机访问操作(get)高高低迭代操作(iterate)高高高插入操作(insert)不适用低高删除操作(remove)不适用低高 5.JDK1.5中引入范型有什么作用?[答案]泛型有助于把ClassCastException运行时异常转变为编译时的类型不匹配错误。错误发现得越早,越能提高软件调试的效率,提高软件的健壮性,降低软件的开发和维护的成本。6.什么是HashSet和HashMap的负载因子?[答案]负载因子(loadfactor)等于size/capacity。负载因子为0,表示空的哈希表;负载因子为0.5,表示半满的哈希表,以此类推。轻负载的哈希表具有冲突少、适于插入和查找的优点(但是用Iterator遍历元素的速度较慢)。HashSet和HashMap的构造方法允许指定负载因子,当哈希表的当前负载达到用户设定的负载因子时,HashSet和HashMap会自动成倍的增加容量(即桶的数量),并且重新分配原有的元素的位置。第16章输入输出1.以下哪些属于File类的功能?a)改变当前目录b)返回根目录的名字c)删除文件d)读取文件中的数据[答案]b,c2.File类可以表示以下哪些内容?a)文件b)目录c)输入流d)输出流[答案]a,b3.以下哪些是合法的构造RandomAccessFile对象的代码?a)RandomAccessFile(newFile("D:\myex\dir1\..\test.java"),"rw")b)RandomAccessFile("D:\myex\test.java","r")c)RandomAccessFile("D:\myex\test.java")d)RandomAccessFile("D:\myex\test.java","wr")[答案]a,b4.引用变量raf引用一个RandomAccessFile对象,如何从文件中读取10个字节?a)raf.readLine();b)raf.read(10);c)byte[]tenb=newbyte[10];raf.read(tenb);d)byte[]tenb=newbyte[10];raf.readFully(tenb);[答案]c 5.以下哪段代码能够向文件中写入UTF8编码的数据?a)publicvoidwrite(Stringmsg)throwsIOException{FileWriterfw=newFileWriter(newFile("file"));fw.write(msg);fw.close();}b)publicvoidwrite(Stringmsg)throwsIOException{OutputStreamWriterosw=newOutputStreamWriter(newFileOutputStream("file"),"UTF8");osw.write(msg);osw.close();}c)publicvoidwrite(Stringmsg)throwsIOException{FileWriterfw=newFileWriter(newFile("file"));fw.setEncoding("UTF8");fw.write(msg);fw.close();}d)publicvoidwrite(Stringmsg)throwsIOException{FilterWriterfw=FilterWriter(newFileWriter("file"),"UTF8");fw.write(msg);fw.close();}e)publicvoidwrite(Stringmsg)throwsIOException{OutputStreamWriterosw=newOutputStreamWriter(newOutputStream(newFile("file")),"UTF8");osw.write(msg);osw.close();}[答案]b 第17章图形用户界面1.以下代码能否编译通过,假如能编译通过,运行时出现什么情况?importjava.awt.*;publicclassFlowAppextendsFrame{publicstaticvoidmain(Stringargv[]){FlowApfa=newFlowApp();fa.setSize(400,300);fa.setVisible(true);}FlowApp(){add(newButton("One"));add(newButton("Two"));add(newButton("Three"));add(newButton("Four"));}//Endofconstructor}//EndofApplication[答案]显示如下图形:2.如果采用流式布局管理器(FlowLayout),在加入组件时不用指定组件在容器中的位置,管理器会自动按照既定方式来安排组件。这句话对吗?[答案]对。3.运行以下程序,会出现什么样的图形界面?importjava.awt.*;publicclassCompLayextendsFrame{publicstaticvoidmain(Stringargv[]){CompLaycl=newCompLay();}CompLay(){Panelp=newPanel();p.setBackground(Color.pink);p.add(newButton("One"));p.add(newButton("Two"));p.add(newButton("Three"));add("South",p);setLayout(newFlowLayout());setSize(300,300);setVisible(true); }}[答案]显示如下图形:4.如何改变当前容器的布局?[答案]通过容器的setLayout()方法来改变布局。5.以下哪些是GridBagConstraints类的属性?a)ipadxb)fillc)insetsd)width[答案]a,b,c6.以下哪些布局管理器会保持组件的最佳宽度和高度?a)GridLayoutb)GridBagLayoutc)BoxLayoutd)FlowLayoute)BorderLayout[答案]d7.采用GridLayout,所有网格的大小相同。这句话对吗?[答案]对8.以下哪些容器的默认布局管理器为FlowLayout?a)Panelb)Appletc)Framed)Windowe)Dialog[答案]a,b9.以下代码能否编译通过,假如能编译通过,运行时出现什么情况?//MyWindow.javaimportjava.awt.event.*;importjava.awt.*;publicclassMyWindowextendsFrameimplementsWindowListener{publicstaticvoidmain(Stringargv[]){MyWindowmwinc=newMyWindow();} publicvoidwindowClosing(WindowEventwe){System.exit(0);}publicMyWindow(){setSize(300,300);setVisible(true);}}[答案]编译出错。MyWindow类没有实现WindowListener接口中的所有方法,因此应该声明为抽象类。10.在AWT的事件处理模型中,一个组件只能注册一个监听者。这句话对吗?[答案]不对11.以下哪些属于在MouseListener监听接口中定义的事件处理方法?a)actionPerformed(ActionEvente){}b)mousePressed(MouseEvente){}c)functionKey(KeyPressk){}d)componentAdded(ContainerEvente){}[答案]b第18章Swing组件1.Swing组件与普通的AWT组件有什么区别?[答案]AWT组件简单、稳定,兼容于任何一个JDK版本,但依赖于本地操作系统的GUI,缺乏平台独立性。每个AWT组件都有一个同位体(peer),它们位于java.awt.peer包中,这些peer负责与本地操作系统的交互,而本地操作系统负责显示和操作组件。由于AWT组件与本地平台的GUI绑定,因此用AWT组件创建的图形界面在不同的操作系统中会有不同的外观。Swing组件从JDK1.2版本才开始引入,这些Swing组件位于javax.swing包中。Swing组件是用纯Java语言编写而成的,不依赖于本地操作系统的GUI,Swing组件可以跨平台运行,即在不同操作系统中保持相同的外观,2.编写一个具有图形用户界面的程序,每隔30秒就在窗体的任意位置显示一个具有随机大小的椭圆。[答案]参见OvalDrawer.java3.JFrame和JApplet的内容面板具有相同的默认布局管理器,这句话对吗?[答案]对4.用各种Swing组件创建一个计算器界面,并且能进行加法、减法、乘法和除法运算。[答案]参见Calculater.java5.JFrame与Frame有什么区别? [答案]JFrame是Swing组件,而Frame是AWT组件。JFrame与Frame的最大区别在于前者不能直接通过add()方法加入组件,也不能直接通过setLayout()方法设置布局。此外,JFrame有一个setDefaultCloseOperation(intoperation)方法,用来决定如何响应用户关闭窗体的操作。6.JRadioButton、JCheckBox、JComboBox和JList有什么区别?[答案]JRadioButton表示单选按钮,可以把一组单选按钮加入到一个按钮组(ButtonGroup)中,在任何时候,用户只能选择按钮组中的一个按钮。JCheckBox表示复选框,用户可以同时选择多个复选框。JComboBox表示下拉列表,下拉列表和单选按钮组一样,也可以提供多个选项,并且只允许用户选择一项。下拉列表的优点在于能节省空间,使界面更加紧凑。只有当用户点击下拉列表,才会显示列表中的所有选项。JList表示列表框,它和下拉列表有许多不同之处。前者在界面上占据固定行数的空间,并且既支持单项选择,也支持多项选择。第19章Java常用类1.以下哪些方法在Object类中定义?a)toString()b)equals(Objecto)c)publicstaticvoidmain(String[]args)d)System.out.println()e)wait()[答案]a,b,e2.wait()、notify()和notifyAll()方法是在哪个类中定义的?a)Threadb)Runnablec)Objectd)Evente)Synchronize[答案]c3.Object类的finalize()方法是如何声明的?a)publicvoidfinalize()b)protectedintfinalize()c)protectedvoidfinalize(inta)d)protectedvoidfinalize()throwsThrowable[答案]d4.运行以下代码,得到什么打印结果?Strings=newString("amit");System.out.println(s.substring(2));[答案]打印:it 5.运行以下代码,得到什么打印结果?Strings1=newString("amit");Strings2=s1.replace("m","i");s1.concat("Poddar");System.out.println(s1);System.out.println((s1+s2).charAt(5));[答案]打印:amiti6.以下哪个类有append()方法?a)StringBufferb)Stringc)Object[答案]a7.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?StringBuffers=newStringBuffer("abcdefgh");StringBuffers1=s.replace(0,1,"q");System.out.println(s);System.out.println(s1==s);[答案]打印:qbcdefghtrue8.“System.out.println(Math.floor(-2.1));”的打印结果是什么?a)-2b)2.0c)-3d)-3.0[答案]d9.以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?inti=3;intj=0;floatk=3.2F;longm=-3;if(Math.ceil(i)