• 853.29 KB
  • 2022-04-22 11:23:31 发布

JAVA语言程序设计 (于静 著) 清华大学出版社 课后答案

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'课后答案网,用心为你服务!大学答案---中学答案---考研答案---考试答案最全最多的课后习题参考答案,尽在课后答案网(www.khdaw.com)!Khdaw团队一直秉承用心为大家服务的宗旨,以关注学生的学习生活为出发点,旨在为广大学生朋友的自主学习提供一个分享和交流的平台。爱校园(www.aixiaoyuan.com)课后答案网(www.khdaw.com)淘答案(www.taodaan.com) 课后答案网www.khdaw.com第1章JavaJavJavaa语言概述习题一一、简答题1.Java语言的诞生日是哪一天?它有哪些特点与优势?2.Java语言程序分为哪几种?JavaApplication程序和JavaApplet程序的主要区别是什么?3.JavaApplication程序在结构上有哪些特点?如何编译、运行?被编译www.khaw.com后生成什么文件?该文件机器可以直接识别吗?如何执行?4.安装JDK后如何对JAVA_HOME、PATH和CLASSPATH环境变量进行设置?它们的作用是什么?5.Java程序在书写上应注意哪些事项?有哪些编码规范?6.为什么要对程序进行注释?Java中有哪几种注释?文档注释符与多行注释符有何不同?二、选择题1.下面关于JavaApplication程序结构特点描述中,错误的是(D)。A.一个JavaApplication程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。C.组成JavaApplication程序的多个类中,有且仅有一个主类。D.一个.java文件中定义多个类时,允许其中声明多个public类。2.编译Java程序后生成的面向JVM的字节码文件的扩展名是(B)。A..javaB..classC..objD..exe3.下面关于Java语言特点的描述中,错误的是(A)。A.Java是纯面向对象编程语言,支持单继承和多继承。B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。C.Java支持多线程编程。D.Java程序与平台无关、可移植性好。4.JavaSE的命令文件(java、javac、javadoc等)所在目录是(C)。A.%JAVA_HOME%jreB.%JAVA_HOME%libC.%JAVA_HOME%binD.%JAVA_HOME%demo5.下列关于运行字节码文件的命令行参的描述中,正确的是(C)。A.命令行的命令字被存放在args[0]中。B.数组args[]的大小与命令行的参数的个数无关。C.第一个命令行参数(紧跟命令字的参数)被存放在args[0]中。D.第一个命令行参数被存放在args[1]中。6.paint()方法使用哪种类型的参数?(A)A.GraphicsB.Graphics2DC.StringD.Color7.Java的核心包中,提供编程应用的基本类的包是(B)。www.khdaw.com 课后答案网www.khdaw.comA.java.utilB.java.langC.java.appletD.java.rmi8.编译Java程序时,用于指定生成class文件位置的选项是(A)。A.-dB.-gC.-verboseD.-nowarn9.下列标识符(名字)命名原则中,正确的是(C)。A.类名的首字母小写B.接口名的首字母小写C.常量全部大写D.变量名和方法名的首字母大写10.下面哪些选项是正确的main方法说明?(D)A.voidmain()B.privatestaticvoidmain(Stringargs[])C.publicmain(Stringargs[])D.publicstaticvoidmain(Stringargs[])www.khaw.com11.下面哪种注释方法能够支持javadoc命令?(C)A.//B./*...*/C./**...*/D./**...**/三、判断题1.Java语言具有较好的安全性和可移植性及与平台无关等特性。(√)2.Java语言的源程序不是编译型的,而是编译解释型的。(√)3.JavaApplication程序中,必有一个主方法main(),该方法有没有参数都可以。(√)4.java.util.Scanner(System.in)可以接收用户从键盘输入的简单数据。(√)5.Java程序中不区分大小写字母。(×)6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。(√)7.System类中的println()方法分行显示信息,而print()方法不分行显示信息。(√)8.当前路径的标识是“.”。(√)9.java命令不区分大小写,而javac命令区分大小写。(×)10.printf()和format()方法使用指定格式字符串和参数,将格式化字符串写入到PrintStream类型的输出流(System.out对象)中。(√)11.在运行字节码文件时,使用java命令,一定要给出字节码文件的扩展名.class。(×)四、编程题1.分别用UltraEdit、NetBeans、Eclipse、JBuilder和JCreator编写一个JavaApplication程序,使该程序运行后输出字符串“Nothingistoodifficultifyouputyourheadintoit.”。2.编写一个具有交互功能的JavaApplication程序,提示从键盘输入应付金额和实付金额后,计算并输出找零或欠付金额。3.编写一个JavaApplet程序,使该程序运行后输出字符串“Don’tputofftilltomorrowwhatshouldbedonetoday.”。www.khdaw.com 课后答案网www.khdaw.com第2章JavaJavJavaa语言基础习题二一、填空题1.已知:inta=8,b=6;则:表达式++a-b++的值为(3)。www.khaw.com2.已知:booleanb1=true,b2;则:表达式!b1&&b2||b2的值为(false)。3.已知:doublex=8.5,y=5.8;则:表达式x++>y--值为(true)。4.已知:inta[]={2,4,6,8};则:表达式(a[0]+=a[1])+++a[2]值为(13)。5.执行intx,a=2,b=3,c=4;x=++a+b+++c++;结果是(x=10,a=3,b=4,c=5)。6.Java中的显式类型转换既能(从低类型向高类型转换)也能从高类型向低类型转换,而隐式类型转换只有前者。7.在Java中,字符串和数组是作为(对象)出现的。8.执行下列程序代码的输出结果是(10,11,11)。inta=10;inti,j;i=++a;j=a--;System.out.printf("%d,%d,%d",a,i,j);9.执行完booleanx=false;booleany=true;booleanz=(x&&y)&&(!y);intf=z==false?1:2;这段代码后,z与f的值分别是(false)和(1)。二、选择题1.下面哪些标识符在Java语言中是合法的?(AB)A.persons$B.TwoUsersC.*pointD.instanceofF.end-line2.下列(D)是合法标识符。A.2endB.-helloC.=ABD.整型变量3.已知inti=2147483647;++i;则i的值等于(A)。A.-2147483648B.2147483647C.2147483648D.-14.若x=5,y=8,则表达式x|y的值为(B)。A.3B.13C.0D.55.若定义有变量floatf1,f2=8.0F,则下列说法正确的是(B)。A.变量f1,f2均被初始化为8.0B.变量f1没有被初始化,f2被初始化为8.0C.变量f1,f2均未被初始化D.变量f2没有被初始化,f1被初始化为8.0www.khdaw.com 课后答案网www.khdaw.com6.基本数据类型short的取值范围是(B)。A.(-256)~255B.(-32768)~32767C.(-128)~127D.0~655357.下列(B)是不能通过编译的语句。A.doubled=545.0;B.chara1=“c”;C.inti=321;D.floatf1=45.0f;8.若定义有shorts;byteb;charc;则表达式s*b+c的类型为(C)。A.charB.shortC.intD.byte9.下列循环语句的循环次数是(B)。inti=5;www.khaw.comdo{System.out.println(i--);i--;}while(i!=0);A.5B.无限C.0D.110.下列代码哪几行会出错?(C)1)publicvoidmodify(){2)intI,j,k;3)I=100;4)while(I>0){5)j=I*2;6)System.out.println("Thevalueofjis"+j);7)k=k+1;8)I--;9)}10}A.line4B.line6C.line7D.line811.下列关于数组的定义形式,哪些是错误的?(ABC)A.int[]c=newchar[10];B.int[][3]=newint[2][];C.int[]a;a=newint;D.charb[];b=newchar[80];12.执行String[]s=newString[10];语句后,哪些结论是正确的?(BC)A.s[0]为未定义B.s.length为10C.s[9]为nullD.s[10]为""13.下列关于Java语言的数组描述中,错误的是(D)。A.数组的长度通常用length表示B.数组下标从0开始C.数组元素是按顺序存放在内存的D.数组在赋初值和赋值时都不判界14.下面的表达式哪些是正确的?(ACE)A.Strings="你好";inti=3;s+=i;B.Strings="你好";inti=3;if(i==s){s+=i};C.Strings="你好";inti=3;s=i+s;D.Strings="你好";inti=3;s=i+;E.Strings=null;inti=(s!=null)&&(s.length()>0)?s.length():0;www.khdaw.com 课后答案网www.khdaw.com15.下列代表十六进制整数的是(C)。A.012345B.2008C.0xfa08D.fb0516.在switch(expression)语句中,expression的数据型不能是(C)。A.charB.shortC.doubleD.byte17.下列说法正确的是(AC)。A.表达式“1+2>3”的值是falseB.表达式“1+2||3”是非法的表达式C.表达式“i+j=1”是非法的表达式D.表达式“1+2>3”的值是true18.指出正确的表达式(B)。A.byte=128;B.longl=0xfffL;C.Boolean=null;D.double=0.9239d;19.publicclassT18{www.khaw.comstaticintarr[]=newint[10];publicstaticvoidmain(Stringa[]){System.out.println(arr[1]);}}哪个语句是正确的?(C)A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空20.若Strings="hello";Stringt="hello";charc[]={"h","e","l","l","o"};则下列哪些表达式返回true?(AB)A.s.equals(t);B.t.equals(newString("hello"));C.t.equals(c);D.s==t;21.执行下面的代码段:switch(m){case0:System.out.println("case0");case1:System.out.println("case1");break;case2:default:System.out.println("default");}下列m的哪些值将引起"default"的输出?(CD)A.0B.1C.2D.322.下列关于“<<”和“>>”的运算,哪些是正确的?(AC)A.00000100000000000000000000000000<<5的运行结果是10000000000000000000000000000000B.00000100000000000000000000000000<<5的运行结果是11111100000000000000000000000000C.11000000000000000000000000000000>>5的运行结果是11111110000000000000000000000000D.11000000000000000000000000000000>>5的运行结果是00000110000000000000000000000000三、判断题1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。(×)www.khdaw.com 课后答案网www.khdaw.com2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(√)3.所有的变量在使用前都必须进行初始化。(×)4.已知bytei=(byte)127;i=i+1;这两个语句能被成功编译。(√)5.Stringstr="abcdefghi";charchr=str.charAt(9);(×)6.char[]chrArray={"a","b","c","d","e","f","g"};charchr=chrArray[6];(√)7.inti,j;booleanbooleanValue=(i==j);(×)8.intintArray[]={0,2,4,6,8};intlength=intArray.length();(×)9.Stringstr="abcedf";intlength=str.length;(×)www.khaw.com10.shortshortValue=220;bytebyteValue=shortValue;(×)11.int[]intArray[60];(×)12.char[]str="abcdefgh";(×)13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。(√)14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。(√)四、分析题1.分析下面的程序,写出运行结果。publicclassExercises5_1{Stringstr=newString("Hi!");char[]ch={"L","i","k","e"};publicstaticvoidmain(Stringargs[]){Exercises5_1ex=newExercises5_1();ex.change(ex.str,ex.ch);System.out.print(ex.str+"");System.out.print(ex.ch);}publicvoidchange(Stringstr,charch[]){str="Howareyou";ch[1]="u";}}运行结果是:(Hi!Luke)2.分析下面的程序,写出运行结果。publicclassExercises5_2{publicstaticvoidmain(String[]args){intn=1,m,j,i;for(i=3;i<=30;i+=2){m=(int)Math.sqrt((double)i);for(j=2;j<=m;j++)if((i%j)==0)www.khdaw.com 课后答案网www.khdaw.combreak;if(j>=m+1){System.out.print(i+"");if(n%5==0)System.out.print("n");n++;}}}}运行结果是:()www.khaw.com3571113171923293.分析下面的程序,写出运行结果:publicclassExercises5_3{publicstaticvoidmain(Stringargs[]){Stringstr1=newString();Stringstr2=newString("String2");charchars[]={"a","","s","t","r","i","n","g"};Stringstr3=newString(chars);Stringstr4=newString(chars,2,6);bytebytes[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};Stringstr5=newString(bytes);StringBufferstrb=newStringBuffer(str3);System.out.println("TheStringstr1is"+str1);System.out.println("TheStringstr2is"+str2);System.out.println("TheStringstr3is"+str3);System.out.println("TheStringstr4is"+str4);System.out.println("TheStringstr5is"+str5);System.out.println("TheStringstrbis"+strb);}}运行结果是:()TheStringstr1isTheStringstr2isString2TheStringstr3isastringTheStringstr4isstringTheStringstr5is0123456789TheStringstrbisastring五、改错题1.找出下面代码的错误部分,说明错误类型及原因,并更正。www.khdaw.com 课后答案网www.khdaw.compublicintm1(intnumber[20]){number=newint[20];for(inti=0;i一定是逻辑型表达式吗?switch语句中,<语句序列>里一定有break语句吗?9.while循环语句与do-while循环语句有何不同?10.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么?11.break语句和continue语句有哪两种形式?12.创建数组元素为基本数据类型的数组时,系统都会指定默认值吗?布尔型的默认值是什么?13.在Java中怎样定义和使用一维数组、二维数组?14.字符串类String和StringBuffer类有何不同?15.Java中的数组实际上是一个隐含的“数组类”的对象,而数组名实际上是该对象的一个引用,这种说法对吗?16.字符数组与字符串有本质的不同,而字符串实际上是String类和StringBuffer类的对象,这种说法对吗?七、编程题1.编写一个程序,求1!+2!+…+10!的值。2.编程求100以内的全部素数。3.使用异或运算符“^”实现两个整数的交换。4.编写一个程序,打印输出下列5×5螺旋方阵:123451617181961524252071423222181312111095.给出任意两个日期,编程计算它们相距的天数。6.编程输出下列图形:*************www.khdaw.com 课后答案网www.khdaw.com7.编程验证哥德巴赫猜想,即任何大于6的偶数可以表示为两素数之和,如10=3+7。8.百鸡百钱问题,公鸡每只3元,母鸡每只5元,小鸡3只1元,用100元钱买100只鸡,公鸡、母鸡和小鸡各买多少?9.编写一个程序,利用数组把10个数用直接交换方法从小到大排序。10.编写一个程序,用选择法对数组a[]={9,5,3,12,22,35,88,11,90,1}进行由小到大的排序。11.找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有)。12.编写一个程序,打印输出10行杨辉三角形。13.编写一个程序,实现字符串的大小写字母的相互转换。www.khaw.com14.编写一个程序,找出两个字符串中所有相同的字符。15.编写一个程序,对字符串数组按字典序重新排列。16.编写一个程序,分析输出字符串中的单词,并统计单词个数。17.编写一个程序,将字符串“.ymenetsrowsihsinamyrevE”反转。第3章JavaJavJavaa语言面向对象基础语言面向对象语言面向对象基础基础习题三一、填空题1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。3.模型应具有(抽象性)、(可理解性)、(精确性)、(确定性)和廉价性等基本特性。4.UML定义了(用例图)、(静态图)、(交互图)、行为图和实现图五类模型图。5.在UML类图中分别用(+)、(#)、(~)和(-)表示属性与方法的公有、保护、默认和私有访问控制权限。6.在UML中,类之间主要有(关联)、(依赖)、(聚集)、(泛化)和实现五种关系。7.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。8.在方法体内定义的变量是(局部变量),其前面不能加(public),且必须(初始化)。9.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。10.对象作方法形参时,方法实参也用对象,实现(引用)调用。www.khdaw.com 课后答案网www.khdaw.com11.(new)是一个特殊的方法,用于创建一个类的实例。12.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。15.Java使用固定于首行的(package)语句来创建包。16.在运行时,由java解释器自动引入,而不用import语句引入的包是(java.lang)。17.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令www.khaw.com打包。二、简答题1.名词解释:OO、OOSE、OOA、OOD、OOP;抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML、类图、对象图、用例图、顺序图、协作图、状态图、活动图、包图、构件/组件图、部署图。2.简述面向对象的基本思想、主要特征和基本要素。3.为什么要对类进行封装?封装的原则是什么?4.类的封装性、继承性和多态性各自的内涵是什么?5.简述依赖、关联和聚集的区别。6.什么是对象?什么是类?二者有何关系?7.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么?8.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符?9.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符?10.简述构造方法的特点与作用。11.Java中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值?12.什么是类变量(静态变量)?什么是实例变量?它们的存储特性、访问方法、主要区别是什么?13.什么是类方法(静态方法)?什么是实例方法?它们的存储特性、访问方法、主要区别是什么?14.什么是包?如何创建包?如何引用包?15.Import语句和package语句的功能分别是什么?16.举例说明JAR包的创建、加载与运行方法。三、选择题1.下面关于封装性的描述中,错误的是(D)。A.封装体包含属性和行为B.被封装的某些信息在外不可见C.封装提高了可重用性D.封装体中的属性和行为的访问权限相同2.下面关于类方法的描述,错误的是(B)。www.khdaw.com 课后答案网www.khdaw.comA.说明类方法使用关键字staticB.类方法和实例方法一样均占用对象的内存空间C.类方法能用实例和类名调用D.类方法只能处理类变量或调用类方法3.下面关于包的描述中,错误的是(A)。A.包是若干对象的集合B.使用package语句创建包C.使用import语句引入包D.包分为有名包和无名包两种4.下述哪些说法是正确的?(BC)A.用static关键字声明实例变量B.实例变量是类的成员变量C.局部变量在方法执行时创建D.局部变量在使用之前必须初始化5.下面哪些代码段是正确的Java源程序?(BCD)A.importjava.io.*;B.importjava.io.*;www.khaw.compackagetestpackage;classPerson{/*dosomething...*/}publicclassTest{/*dosomething...*/}publicclassTest{/*dosomething...*/}C.importjava.io.*;D.packagetestpackage;importjava.awt.*;publicclassTest{/*dosomething...*/}publicclassTest{/*dosomething...*/}四、判断题1.类是一种类型,也是对象的模板。(√)2.类中说明的方法可以定义在类体外。(×)3.实例方法中不能引用类变量。(×)4.创建对象时系统将调用适当的构造方法给对象初始化。(√)5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。(√)6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。(√)7.对象可作方法参数,对象数组不能作方法参数。(×)8.class是定义类的惟一关键字。(√)9.Java语言会自动回收内存中的垃圾。(√)五、分析题分析下面的程序,写出运行结果。importjava.awt.*;importjava.applet.*;classMemberVar{staticintsn=30;finalintfn;finalintfk=40;MemberVar(){fn=++sn;}www.khdaw.com 课后答案网www.khdaw.com}publicclassExercises5_1extendsApplet{publicvoidpaint(Graphicsg){MemberVarobj1=newMemberVar();MemberVarobj2=newMemberVar();g.drawString("obj1.fn="+obj1.fn,20,30);g.drawString("obj1.fk="+obj1.fk,20,50);g.drawString("obj2.fn="+obj2.fn,20,70);g.drawString("obj2.fk="+obj2.fk,20,90);}}www.khaw.com运行结果是:()obj1.fn=31obj1.fk=40obj2.fn=32obj2.fk=40六、改错题1.下面的程序中有若干个语法错误,找出后请改正。publicclassMyMainClass{publicstaticvoidmain(){TheOtherClassobj=newTheOtherClass("JohnSmith","Male","UK");System.out.println(obj.name+""+obj.gender+""+obj.nationality);}System.out.println("Theendoftheprogram!")}publicclassTheOtherClass{privateStringname,gender,nationality;publicTheOtherClass(Stringname,Stringgender,Stringnationality){this.name=name;this.gender=gender;this.nationality=nationality;}}改正后程序:publicclassMyMainClass{publicstaticvoidmain(Stringargs[]){TheOtherClassobj=newTheOtherClass("JohnSmith","Male","UK");System.out.println(obj.name+""+obj.gender+""+obj.nationality);System.out.println("Theendoftheprogram!");www.khdaw.com 课后答案网www.khdaw.com}}classTheOtherClass{publicStringname,gender,nationality;publicTheOtherClass(Stringname,Stringgender,Stringnationality){this.name=name;this.gender=gender;this.nationality=nationality;}}2.下面的程序中有若干个语法错误,找出后请改正。www.khaw.compublicclassCar{privateStringcarName;publicintmileage;privatestaticfinalintTOP_SPEED=50;abstractvoidalert();publicstaticintgetTopSpeed(){returnTOP_SPEED;}publicstaticvoidsetCarName(){carName="Bensi";}publicstaticvoidsetMileage(){mileage=180;}}改正后程序:publicabstractclassCar{privateStringcarName;publicintmileage;privatestaticfinalintTOP_SPEED=50;abstractvoidalert();publicstaticintgetTopSpeed(){returnTOP_SPEED;}publicvoidsetCarName(){carName="Bensi";}publicvoidsetMileage(){mileage=180;}}七、编程题www.khdaw.com 课后答案网www.khdaw.com1.设计(用UML的类图表示)并实现一点类Point,该类的构成包括点的x和y两个坐标,其构造方法、设置和修改坐标、求解两点距离的方法等,编写应用程序生成该类的对象并对其进行操作。2.设计(用UML的类图表示)并实现一个矩形类Rectangle,包括其构造方法、求解矩形面积和周长的方法等,实例化后输出相应的信息。3.计算出Fibonacci数列的前n项,Fibonacci数列的第一项和第二项都是1,从第三项开始,每项的值都是该项的前两项之和。即:F(n)=F(n-1)+F(n-2)n≥3F(1)=F(2)=1n=1,24.参照“图3-4”实现Student类的定义,然后生成该类的对象后进行相关操作。www.khaw.com第4章JavaJavJavaa语言面向对象高级程序设计语言面向对象语言面向对象高级程序设计高级程序设计习题四一、填空题1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类与非子类)的代码访问引用。5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。www.khdaw.com 课后答案网www.khdaw.com11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。www.khaw.com16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。22.一个接口可以通过关键字extends来继承(多个)其他接口。23.接口中只能包含(publicstaticfinal)类型的成员变量和(publicabstract)类型的成员方法。24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。25.静态内部类可直接通过外部类名引用,其一般格式是(new外部类名.内部类构造方法();)。26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。二、简答题1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?2.如何创建一个类的子类?3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?6.什么是成员变量的继承?什么是成员变量的覆盖?www.khdaw.com 课后答案网www.khdaw.com7.举例说明什么是上转型对象,上转型对象的操作原则是什么?8.简述接口定义的一般格式。9.什么是接口?如何定义接口?接口与类有何区别?10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?11.比较接口与抽象类的异同。12.什么是抽象类?什么是抽象方法?各自有什么特点?13.什么是最终类?什么是最终变量?什么是最终方法?14.简述内部类的类型。15.简述在外部类的内部与外部对实例成员类实例化的方法。16.简述定义语句匿名类和参数匿名的一般格式。www.khaw.com17.什么是适配器模式?什么是装饰模式?三、选择题1.下面关于类的继承性的描述中,错误的是(C)。A.继承是在已有的基础上生成新类的一种方法B.Java语言要求一个子类只有一个父类C.父类中成员的访问权限在子类中将被改变D.子类继承父类的所有成员,但不包括私有的成员方法2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是(B)。A.默认B.protectedC.privateD.public3.在类的修饰符中,规定只能被同一包类所使用的修饰符是(B)。A.publicB.默认C.finalD.abstract4.下列关于子类继承父类的成员描述中,错误的是(C)。A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。C.子类中继承父类中的所有成员都可以访问。D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?(AB)A.publicclassMyClassextendsObjectB.publicclassMyClassC.privateclassMyClassextendsObjectD.classMyClassextendsObject6.下列关于继承性的描述中,错误的是(C)。A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员7.下列关于抽象类的描述中,错误的是(C)。A.抽象类是用修饰符abstract说明的B.抽象类是不可以定义对象的www.khdaw.com 课后答案网www.khdaw.comC.抽象类是不可以有构造方法的D.抽象类通常要有它的子类8.设有如下类的定义:publicclassparent{intchange(){}}classChildextendsParent{}则,下面哪些方法可加入Child类中?(AB)A.publicintchange(){}B.intchang(inti){}C.privateintchange(){}D.abstractintchang(){}9.下列关于构造方法的叙述中,错误的是(D)。www.khaw.comA.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承10.下面叙述中,错误的是(C)。A.子类继承父类B.子类能替代父类C.父类包含子类D.父类不能替代子类11.下列对多态性的描述中,错误的是(B)。A.Java语言允许方法重载与方法覆盖B.Java语言允许运算符重载C.Java语言允许变量覆盖D.多态性提高了程序的抽象性和简洁性12.下面关于接口的描述中,错误的是(A)。A.一个类只允许继承一个接口B.定义接口使用的关键字是interfaceC.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现D.接口实际上是由常量和抽象方法构成的特殊类13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(C)A.ArrayListmyList=newObject();B.ArrayListmyList=newList();C.ListmyList=newArrayList();D.ListmyList=newList();14.下列哪些方法与方法publicvoidadd(inta){}为合理的重载方法?(ACD)A.publicvoidadd(chara)B.publicintadd(inta)C.publicvoidadd(inta,intb)D.publicvoidadd(floata)15.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是(C)。A.publicintMAX_LENGTH=100;B.finalpublicintMAX_LENGTH=100;C.publicfinalintMAX_LENGTH=100;D.finalintMAX_LENGTH=100;四、判断题www.khdaw.com 课后答案网www.khdaw.com1.Java语言中,构造方法是不可以继承的。(√)2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。(×)3.抽象方法是一种只有说明而无具体实现的方法。(√)4.Java语言中,所创建的子类都应有一个父类。(√)5.调用this或super构造方法的语句必须放在第一条语句。(√)6.一个类可以实现多个接口,接口可以实现“多重继承”。(√)7.实现接口的类不能是抽象类。(√)8.使用构造方法只能给实例成员变量赋初值。(√)9.Java语言不允许同时继承一个类并实现一个接口。(×)www.khaw.com五、分析题1.分析下面的程序,写出运行结果。publicclassExercises6_1extendsTT{publicvoidmain(Stringargs[]){Exercises6_1t=newExercises6_1("Tom");}publicExercises6_1(Strings){super(s);System.out.println("Howdoyoudo?");}publicExercises6_1(){this("IamTom");}}classTT{publicTT(){System.out.println("Whatapleasure!");}publicTT(Strings){this();System.out.println("Iam"+s);}}运行结果是:()Whatapleasure!IamTomHowdoyoudo?2.分析下面的程序,写出运行结果。publicclassExercises6_2{privatestaticintcount;privateStringname;publicclassStudent{www.khdaw.com 课后答案网www.khdaw.comprivateintcount;privateStringname;publicvoidOutput(intcount){count++;this.count++;Exercises6_2.count++;Exercises6_2.this.count++;System.out.println(count+""+this.count+""+Exercises6_2.count+""+Exercises6_2.this.count++);www.khaw.com}}publicStudentaStu(){returnnewStudent();}publicstaticvoidmain(Stringargs[]){Exercises6_2g3=newExercises6_2();g3.count=10;Exercises6_2.Students1=g3.aStu();s1.Output(5);}}运行结果是:()6112123.分析下面的程序,写出运行结果。classExercises6_3{classDog{privateStringname;privateintage;publicintstep;Dog(Strings,inta){name=s;age=a;step=0;}publicvoidrun(Dogfast){fast.step++;}}publicstaticvoidmain(Stringargs[]){Exercises6_3a=newExercises6_3();Dogd=a.newDog("Tom",3);www.khdaw.com 课后答案网www.khdaw.comd.step=29;d.run(d);System.out.println(""+d.step);}}运行结果是:()304.分析下面的程序,写出运行结果。classAclass{voidgo(){System.out.println("Aclass");}}www.khaw.compublicclassBclassextendsAclass{voidgo(){System.out.println("Bclass");}publicstaticvoidmain(Stringargs[]){Aclassa=newAclass();Aclassa1=newBclass();a.go();a1.go();}}运行结果是:()AclassBclass六、改错题1.找出下面代码的错误部分,说明错误类型及原因,并更正之。publicclassCar{privateStringcarName;publicintmileage;privatestaticfinalintTOP_SPEED=200;abstractvoidalert();publicstaticintgetTopSpeed(){returnTOP_SPEED;}publicstaticvoidsetCarName(){carName="奥迪";}publicstaticvoidsetMileage(){mileage=180;}}错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。更正:www.khdaw.com 课后答案网www.khdaw.compublicabstractclassCar{privateStringcarName;publicintmileage;privatestaticfinalintTOP_SPEED=200;abstractvoidalert();publicstaticintgetTopSpeed(){returnTOP_SPEED;}publicvoidsetCarName(){carName="奥迪";}www.khaw.compublicvoidsetMileage(){mileage=180;}}2.下列代码不能编译的原因是:()。classA{privateintx;publicstaticvoidmain(Stringargs[]){newB();}classB{B(){System.out.println(x);}}}因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。更正如下:publicclassA{privateintx;publicstaticvoidmain(Stringargs[]){Aa=newA();a.newB();}classB{B(){System.out.println(x);}}}七、编程题1.先在一个包中编写第一个类ClassA,要求该类中具有四种不同访问权限的成员,再在另一个包中编写第二个类ClassB,并在该类中编写一个方法以访问第一个类中的成员。总结类成员访问控制的基本规则。www.khdaw.com 课后答案网www.khdaw.com2.设计一个汽车类Car,实现构造方法的重载,然后利用这些构造方法,实例化不同的对象,输出相应的信息。3.设计一个乘法类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。然后以JavaApplet程序方式调用这三个同名的方法mul,输出其测试结果。4.已知编一个抽象类AbstractShape如下所示:abstractclassAbstractShape{finaldoublePI=3.1415926;publicabstractdoublegetArea();publicabstractdoublegetGirth();www.khaw.com}请编写AbstractShape类的一个子类,使该子类实现计算圆面积方法getArea()和周长的方法getGirth()。5.按下列要求编程:(1)编写一个抽象类,至少有一个常量和一个抽象方法。(2)编写二个抽象类的子类,重写定义抽象类中的抽象方法。(3)编写一个主类使用3个类,进行某种运算。6.设计一个形状Shapes接口,在其中定义计算面积的getArea()方法和求周长的getPerimeter()方法,然后设计一个Circle类以实现Shapes接口中的两个方法,最后以JavaApplication程序方式测试前述接口及其实现类,输出其测试结果。7.使用继承和接口技术,编写一个程序,求解几何图形(如直线、三角形、矩形、圆和多边形)的周长和面积。8.使用继承和接口技术,编写一个程序,求解一元多次方程(如一元一次、一元二次和一元高次方程)的解。9.使用内部类技术构造一个线性链表。10.参照例4-30以组合方式创建某类的适配器。第5章JavaJavJavaa标准类库习题五一、简答题1.计算调用下列方法的结果。Math.sqrt(4);//2.022.0.0Math.pow(4,3);//64.0664.04.0Math.max(2,Math.min(3,4));//3www.khdaw.com 课后答案网www.khdaw.com2.下列程序中构造了一个set并且调用其方法add(),输出结果是(2)。importjava.util.*;publicclassT1_2{publicinthashCode(){return1;}publicbooleanequals(Objectb){returntrue;}publicstaticvoidmain(Stringargs[]){www.khaw.comSetset=newHashSet();set.add(newT1_2());set.add(newString("ABC"));set.add(newT1_2());System.out.println(set.size());}}3.Collection有哪几种主要接口?(Collection、List、Map、Set)4.基本的集合接口有哪些?5.映射、集合和列表的含义是什么?6.HashMap类和TreeMap类有何区别?7.HashSet类和Treeset类有何区别?8.ArrayList类和LinkedList类有何区别?二、选择题1.可实现有序对象的操作有哪些?(CD)A.HashMapB.HashSetC.TreeMapD.LinkedList2.迭代器接口(Iterator)所定义的方法是(ABC)。A.hasNext()B.next()C.remove()D.nextElement()3.下列方法属于java.lang.Math类的有(方法名相同即可)(ABCD)。A.random()B.abs()C.sqrt()D.pow()4.指出正确的表达式有(AB)。A.doublea=2.0;B.Doublea=newDouble(2.0);C.byteA=350;D.Bytea=120;5.System类在哪个包中?(B)A.java.awtB.java.langC.java.utilD.java.io6.关于Float,下列说法正确的是(ACD)。A.Float在java.lang包中B.Floata=1.0是正确的赋值方法C.Float是一个类D.Floata=newFloat(1.0)是正确的赋值方法三、判断题www.khdaw.com 课后答案网www.khdaw.com1.Map接口是自Collection接口继承而来。(×)2.集合Set是通过键-值对的方式来存储对象的。(×)3.Integeri=(Integer.valueOf("926")).intValue();(√)4.Strings=(Double.valueOf("3.1415926")).toString();(√)5.IntegerI=Integer.parseInt("926");(√)6.Arrays类主要对数组进行操作。(√)7.在集合中元素类型必须是相同的。(√)8.集合中可以包含相同的对象。(×)9.枚举接口定义了具有删除功能的方法。(×)四、编程题www.khaw.com1.编程生成10个1~100之间的随机数,并统计每个数出现的概率。2.使用HashMap类保存由学号和学生姓名所组成的键-值对,比如"200709188"和"JohnSmith",然后按学号的自然顺序将这些键-值对一一打印出来。3.编写一个程序,使用Map实现对学生成绩单的存储和查询,并将成绩排序存储到TreeSet中,求出平均成绩、最高分和最低分。4.编写一个程序,实现将十进制整数转换为二进制、八进制和十六进制形式。5.编写一个程序,在其中调用操作系统的注册表编辑器“regedit.exe”。6.使用java.text.SimpleDateFormat类将系统日期格式化为“2007年8月20日”的形式输出。7.编写程序实现:定义一个Float类型的数组,随机往其中填充元素,并打印该数组内容。第6章JavaJavJavaaGUIGGUIUI程序设计习题六一、填空题1.Swing的事件处理机制包括(事件源)、事件和事件监听者。2.Java事件处理包括建立事件源、(建立事件监听器)和将事件源注册到监听器。3.在Swing中,可以根据不同用户的习惯,设置不同的界面显示风格,Swing提供了三种显示风格,分别是(Metal风格)风格、(Motif风格)风格和(Windows风格)风格。4.Swing的顶层容器有(JFrame)、JApplet、JWindow和JDialog。5.(根面板)由一个玻璃面板、一个内容面板和一个可选择的菜单条组成。二、简答题www.khdaw.com 课后答案网www.khdaw.com1.试述AWT的事件处理机制。2.什么是Swing?它比AWT有什么优点?使用上有何区别?3.布局管理器的作用是什么?在JDK中哪些常用布局管理器?各有何特点?4.什么是容器组件?组件与容器有何区别?5.试述Swing常用组件的创建与使用。三、选择题1.Swing组件必须添加到Swing顶层容器相关的(B)。A.分隔板上B.内容面板上C.选项板上D.复选框内2.Panel和Applet的默认布局管理器是(A)。www.khaw.comA.FlowLayoutB.CardLayoutC.BorderLayoutD.GridLayout3.容器类java.awt.container的父类是(C)。A.java.awt.FrameB.java.awt.PanelC.java.awt.ComponetD.java.awt.Windows4.哪些布局管理器使用的是组件的最佳尺寸?(AE)A.FlowLayoutB.BorderLayoutC.GridLayoutD.CardLayoutE.GridBagLayout5.关于AWT和Swing说法正确的是(CD)。A.Swing是AWT的子类B.AWT在不同操作系统中显示相同的风格C.AWT和Swing都支持事件模型D.Swing在不同的操作系统中显示相同的风格6.关于使用Swing的基本规则,下列说法正确的是(D)。A.Swing组件可直接添加到顶级容器中B.要尽量使用非Swing的重要级组件C.Swing的Jbutton不能直接放到Frame上D.以上说法都对7.在Java编程中,Swing包中的组件处理事件时,下面(A)是正确的。A.Swing包中的组件也是采用事件的委托处理模型来处理事件的B.Swing包中的组件产生的事件类型,也都带有一个J字母,如JMouseEventC.Swing包中的组件也可以采用事件的传递处理机制D.Swing包中的组件所对应的事件适配器也是带有J字母的,如JMouseAdapter四、判断题1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。(×)2.一个容器中可以混合使用多种布局策略。(×)3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。(√)4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。(√)5.在使用BorderLayout时,最多可以放入五个组件。(√)www.khdaw.com 课后答案网www.khdaw.com6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。(×)7.Java中,并非每个事件类都只对应一个事件。(√)五、编程题1.编写一个JApplet程序,包含一个JLabel对象,并显示用户的姓名。2.JButton与Button有何不同?编写一个图形界面的Application程序,包含一个带图标的JButton对象。当用户单击这个按钮时,Application程序把其标题修改为“单击按钮”。3.JPasswordField是谁的子类?它有什么特点?编写JApplet程序接受并验证用户输入的账号和密码,一共提供3次输入机会。www.khaw.com4.编程包含一个单选按钮组和一个普通按钮,单选按钮组中包含三个单选,文本说明分别为“普通”、“黑体”和“斜体”。选择文本标签为“普通”的单选按钮时,普通按钮中的文字为普通字体,选择文本标签为“黑体”的单选按钮时,普通按钮中文字的字体为黑体,选择文本标签为“斜体”的单选按钮时,普通按钮中文字的字体为斜体。5.编程包含一个下拉列表和一个按钮,下拉列表中有10、14、18三个选项。选择10时,按钮中文字的字号为10,选择14时,按钮中文字的字号为14,选择18时,按钮中文字的字号为18。第7章JavaJavJavaaAppletAAppletpplet及其应用习题七一、填空题1.Applet生命周期方法有init()、(start())、stop()和destroy()。2.与显示相关的Applet方法有(paint())、repaint()和update()。二、简答题1.init()方法在JavaApplet中起什么作用?2.JavaApplet中的主要方法是哪几个?3.JavaApplet生命周期包括哪几个阶段?4.JavaApplet在安全性方面进行了哪些限制?5.JavaApplet是怎样嵌入HTML文件中的?在HTML文件中至少有哪些说明?6.JavaApplet和Application有何区别?是否可以将JavaApplet改写成JavaApplication程序?三、选择题www.khdaw.com 课后答案网www.khdaw.com1.下列操作中,不属于Applet安全限制的是(A)。A.与同一个页面中的Applet通信B.加载本地库C.运行本地可执行程序D.读写本地文件系统2.为了向一个Applet传递参数,可以在HTML文件的APPLET标志中使用PARAM选项。在Applet程序中获取参数时,应使用的方法是(B)。A.getDocumentBase()B.getParameter()C.getCodeBaseD.getImage()3.下面关于Applet的说法正确的是(C)。A.Applet能访问本地文件B.Applet也需要main方法C.Applet必须继承自java.awt.AppletD.Applet程序不需要编译4.编译JavaApplet源程序文件产生的字节码文件的扩展名为(B)。www.khaw.comA.javaB.classC.htmlD.exe5.在JavaApplet程序用户自定义的Applet子类中,常常重载(D)方法在Applet的界面中显示文字、图形和其他界面元素。A.start()B.stop()C.init()D.paint()6.在编写JavaApplet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上(D)语句。A.importjava.awt.*;B.importjava.applet.*;C.importjava.io.*;D.importjava.awt.event.*;7.在浏览器中执行Applet程序四个方法里最先执行的是(A)。A.init()B.start()C.destroy()D.stop()四、判断题1.Applet的执行离不开一定的HTML文件。(√)2.Applet可以运行本地机器上的可执行程序(×)3.JavaApplet不能够存取客户机磁盘上的文件。(√)4.Applet可以运行在浏览器中。(√)5.Applet的两个方法getCodeBase()和getDocumentBase()的返回值都是URL类的对象,且二者返回的都是相同的URL地址。(×)6.Applet是一种特殊的Panel,它是JavaApplet程序的最外层容器。(√)7.JavaApplet是由独立的解释器程序来运行的。(×)8.JavaApplet只能在图形界面下工作。(√)五、编程题1.编写一个JavaApplet程序,绘制直线、各种矩形、多边形、圆和椭圆等图形。2.编写Applet小程序,利用Applet显示一幅图像。3.编写Applet小程序,利用Applet连续不断地播放音乐。4.在上述编程题2的基础上编写Applet小程序,当鼠标经过该图像时播放一个声音。www.khdaw.com 课后答案网www.khdaw.com第8章JavaJavJavaa异常处理技术习题八一、简答题www.khaw.com1.什么是异常?简述Java的异常处理机制。2.系统定义的异常与用户自定义的异常有何不同?如何使用这两类异常?3.在Java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?try-catch-finally语句如何使用?4.说明throws与throw的作用。5.如何创建、抛出自定义异常?二、选择题1.请问所有的异常类皆继承哪一个类?(A)A.java.lang.ThrowableB.java.lang.ExceptionC.java.lang.ErrorD.java.io.Exception2.哪个关键字可以抛出异常?(B)A.transientB.throwC.finallyD.catch3.对于已经被定义过可能抛出异常的语句,在编程时(A)。A.必须使用try/catch语句处理异常,或用throw将其抛出。B.如果程序错误,必须使用try/catch语句处理异常。C.可以置之不理。D.只能使用try/catch语句处理。4.下面程序段的执行结果是什么?(B)publicclassFoo{publicstaticvoidmain(String[]args){try{return;}finally{System.out.println("Finally");}}}A.编译能通过,但运行时会出现一个例外。B.程序正常运行,并输出"Finally"。C.程序正常运行,但不输出任何结果。D.因为没有catch语句块,所以不能通过编译。5.下面是一些异常类的层次关系:java.lang.Exceptionwww.khdaw.com 课后答案网www.khdaw.comjava.lang.RuntimeExceptionjava.lang.IndexOutOfBoundsExceptionjava.lang.ArrayIndexOutOfBoundsExceptionjava.lang.StringIndexOutOfBoundsException假设有一个方法X,能够抛出两个异常,ArrayIndex和StringIndex异常,假定方法X中没有try-catch语句处理这些异常,下面哪个答案是正确的?(AB)A.方法X应该声明抛弃ArrayIndexOutOfBoundsException和StringIndexOutOfBounds-Exception。B.如果调用X的方法捕获IndexOutOfBoundsException,则ArrayIndexOutOfBounds-Exception和StringIndexOutOfBoundsException都可以被捕获。www.khaw.comC.如果方法X声明抛弃IndexOutOfBoundsException,则调用X的方法必须用try-catch语句捕获。D.方法X不能声明抛弃异常。6.下面的方法是一个不完整的方法,其中的方法unsafe()会抛出一个IOException,那么在方法的①处应加入哪条语句,才能使这个不完整的方法成为一个完整的方法?(DE)①____________________________②{if(unsafe()){//dosomething…}③elseif(safe()){//dotheother…}④}A.publicIOExceptionmethodName()B.publicvoidmethodName()throwIOExceptionC.publicvoidmethodName()D.publicvoidmethodName()throwsIOExceptionE.publicvoidmethodName()throwsException7.如果下列的方法能够正常运行,在控制台上将显示什么?(ACD)publicvoidexample(){try{unsafe();System.out.println("Test1");}catch(SafeExceptione){System.out.println("Test2");}finally{System.out.println("Test3");}System.out.println("Test4");}A.Test1B.Test2C.Test3D.Test4三、判断题1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。(√)2.使用try-catch-finally语句只能捕获一个异常。(×)www.khdaw.com 课后答案网www.khdaw.com3.try-catch语句不可以嵌套使用。(×)4.Error类所定义的异常是无法捕获的。(√)5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。(√)6.用户自定义异常类是通过继承Throwable类来创建的。(×)7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。(√)四、程序填空publicclassServerTimedOutExceptionextendsException{privateintport;www.khaw.compublicServerTimedOutException(Stringmessage,intport){super(message);this.port=port;}publicintgetPort(){returnport;}}classClient{//在下行横线处填上声明抛弃ServerTimedOutException例外的语句publicvoidconnectMe(StringserverName)______________________{intsuccess;intportToConnect=80;success=open(serverName,portToConnect);if(success==-1){//在下行横线处填上抛出ServerTimedOutException例外的语句_______________________________________}}privateintopen(StringserverName,intportToConnect){return0;}}五、编程题1.编写一个程序,从键盘读入5个整数存储在数组中,要求在程序中处理数组越界的异常。2.编写JavaAplication,求解从命令行以参数形式读入两个数之积,若缺少操作数或运算符,则抛出自定义异常OnlyOneException与NoOperationException并退出程序。3.编写一个简单的计算器程序,能够计算两个变量进行四则运算的结果。在计算中及时捕获各种算术异常,保证在输入各种数字的时候程序才能够计算出结果。www.khdaw.com 课后答案网www.khdaw.com4.定义一个邮件地址异常类,当用户输入的邮件地址不合法时,抛出异常(其中邮件地址的合法格式为****@****,也就是说必须是在@符号左右出现一个或多个其他字符的字符串)。第9章JavaJavJavaa多线程技术www.khaw.com习题九一、简答题1.线程与进程有什么关系?2.线程有几种状态,引起线程中断的主要原因有哪些?3.一个线程执行完run()方法后,进入了什么状态?该线程还能再调用start()方法吗?4.建立线程的方法有哪几种?Runnable接口在线程创建中的作用?5.Runnable接口中包括哪些抽象方法?Thread类有哪些主要的成员变量和方法?6.线程在什么样的状态时,调用isAlive()方法返回的值是false?7.在多线程中引入同步机制的原因是什么?8.在什么方法中可以使用wait()、notify()及notifyAll()方法?9.线程调用interrupt()的作用是什么?线程什么时候会发生死锁?10.线程联合有什么功能?线程分为哪两类?二、选择题1.运行下列程序,会产生什么结果?(A)1)publicclassExercises3_1extendsThreadimplementsrunable{2)publicvoidrun(){3)System.out.println("thisisrun()");4)}5)publicstaticvoidmain(Stringargs[]){6)Threadt=newThread(newExercises3_1());7)t.start();8)}9)}A.第一行会产生编译错误B.第六行会产生编译错误C.第六行会产生运行错误D.程序会运行和启动2.线程在生命周期中要经历五种状态,若线程当前是新建状态,则它可以到达的下一个状态是(B)。www.khdaw.com 课后答案网www.khdaw.comA.运行状态B.可运行状态C.阻塞状态D.终止状态3.下列关于Java多线程并发控制机制的叙述中,错误的是(D)。A.Java中没有提供检测与避免死锁的专门机制,但应用程序可以采用某些策略防止死锁的发生B.共享数据的访问权限都必须定义为privateC.Java中对共享数据操作的并发控制是采用加锁技术D.线程之间的交互,提倡采用suspend()/resume()方法4.哪个关键字可以对对象加互斥锁?(C)A.transientB.serializeC.synchronizedD.static5.下面哪些方法可用于创建一个可运行的多线程类?(AB)www.khaw.comA.publicclassTimplementsRunable{publicvoidrun(){…}}B.publicclassTextendsThread{publicvoidrun(){…}}C.publicclassTimplementsThread{publicvoidrun(){…}}D.publicclassTimplementsThread{publicintrun(){….}}E.publicclassTimplementsRunable{protectedvoidrun(){…}}6.下面哪些方法可以在任何时候被任何线程调用?(ABC)A.sleep()B.yield()C.synchronized(this)D.notify()E.wait()F.notifyAll()7.下列哪些情况可以终止当前线程的运行?(BCD)A.当创建一个新线程时B.当该线程调用sleep()方法时C.抛出一个异常时D.当一个优先级高的线程进入就绪状态时三、判断题1.一个Java多线程的程序不论在什么计算机上运行,其结果始终是一样的。(×)2.Java线程有五种不同的状态,这五种状态中的任何两种状态之间都可以相互转换。(×)3.所谓线程同步就是若干个线程都需要使用同一个synchronized修饰的方法。(√)4.使用Thread子类创建线程的优点是可以在子类中增加新的成员变量,使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能。但是,Java不支持多继承,Thread类的子类不能再扩展其他的类。(√)5.Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示。每个Java线程的优先级都在常数1和10之间,即Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之间。如果没有明确地设置线程的优先级别,每个线程的优先级都为常数8。(×)6.当线程类所定义的run()方法执行完毕,线程的运行就会终止。(√)7.线程的启动是通过引用其start()方法而实现的。(√)四、编程题www.khdaw.com 课后答案网www.khdaw.com1.请采用实现Runnable接口的多线程技术,用50个线程,生成10000个[1-1000]间的随机整数。2.运用多线程技术在上下分割的两个窗口中,分别从左到右与从右到左移动字符串。第10章JavaJavJavaa输入输出技术www.khaw.com习题十一、简答题1.什么叫流?简述流的分类。2.能否将一个对象写入一个随机访问文件?3.BufferedReader流能直接指向一个文件对象吗?为什么?4.字节流和字符流之间有什么区别?5.简述可以用哪几种方法对文件进行读写。6.从字节流到字符流的转化过程中,有哪些注意事项?二、选择题1.实现字符流的写操作类是(B),实现字符流的读操作类是(A)。A.FileReaderB.WriterC.FileInputStreamD.FileOutputStream2.要从“file.dat”文件中读出第10个字节到变量c中,下列哪个方法适合?(C)A.FileInputStreamin=newFileInputStream("file.dat");intc=in.read();B.RandomAccessFilein=newRandomAccessFile("file.dat");in.skip(9);intc=in.readByte();C.FileInputStreamin=newFileInputStream("file.dat");in.skip(9);intc=in.read();D.FileInputStreamin=newFileInputStream("file.dat");in.skip(10);intc=in.read();3.构造BufferedInputStream的合适参数是哪些?(AC)A.BufferedInputStreamB.BufferedOutputStreamC.FileInputStreamD.FileOuterStreamE.File4.在编写JavaApplication程序时,若需要使用到标准输入输出语句,必须在程序的开头写上(C)语句。www.khdaw.com 课后答案网www.khdaw.comA.importjava.awt.*;B.importjava.applet.Applet;C.importjava.io.*;D.importjava.awt.Graphics;5.下列流中哪个不属于字符流?(D)A.InputStreamReaderB.BufferedReaderC.FilterReaderD.FileInputStream6.字符流与字节流的区别在于(D)。A.前者带有缓冲,后者没有B.前者是块读写,后者是字节读写C.二者没有区别,可以互换使用D.每次读写的字节数不同www.khaw.com三、判断题1.文件缓冲流的作用是提高文件的读/写效率。(√)2.通过File类可对文件属性进行修改。(√)3.IOException必须被捕获或抛出。(√)4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。(√)5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。(√)6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。(√)四、编程题1.使用File类列出某一个目录下创建日期晚于2007-8-10的文件。2.使用File类创建一个多层目录d:javach10src。3.读取一个Java源程序,输出并统计其中所用的关键字。4.编写应用程序,使用文件输出流向文件中分别写入如下类型的数据:int、double和字符串。5.编写应用程序,列出指定目录下的所有文件和目录名,然后将该目录下的所有文件后缀名为.txt的文件过滤出来显示在屏幕上。6.写一程序,读入命令行第一个参数指定的文本文件,将其所有字符转换为大写后写入第二个参数指定的文件中。第11章网络编程技术网络编程技网络编程技术术习题十一一、填空题www.khdaw.com 课后答案网www.khdaw.com1.URL类的类包是(java.net.URL)。2.URL.getFile()方法的作用是(获得URL实例的文件名)。3.URL.getPort()方法的作用是(获得URL实例的端口号)。4.Sockets技术是构建在(TCP)协议之上。5.Datagrams技术是构建在(UDP)协议之上。6.ServerSocket.accept()返回(Socket)对象,使服务器与客户端相连。7.为了实现组播通信,java.net包中有相应的(MulticastSocket)类。8.RMI的英文全称是(RemoteMethodInvocation,远程方法调用)。9.启动RMIRegistry服务器的命令是(StartRMIRegistry)。二、简答题www.khaw.com1.名词解释:TCP、UDP、IP地址、端口号、URL、套接字、RMI。2.简述并比较URL类的四种构造方法。3.客户/服务器模式有什么特点?Socket类和ServerSocket类的区别是什么?4.TCP通信的特点是什么?画图说明基于Socket通信的C/S模型与基本算法。5.UDP通信的特点是什么?画图说明基于Datagram套接字通信的发送和接收流程。6.画图说明RMI的体系结构。7.简述基于RMI的分布式通信编程的基本步骤。三、选择题1.若对Web页面进行操作,一般会用到的类是(CD)。A.SocketB.DatagramSocketC.URLD.URLConnection2.在套接字编程中,客户方需用到Java类(C)来创建TCP连接。A.ServerSocketB.DatagramSocketC.SocketD.URL3.在套接字编程中,服务器方需用到Java类(C)来监听端口。A.SocketB.URLC.ServerSocketD.DatagramSocket4.URL类的getHost方法的作用是(A)。A.返回主机的名字B.返回网络地址的端口C.返回文件名D.返回路径名5.URL类的getRef方法的作用是(A)。A.返回网页的特定地址B.返回主机的名字C.返回路径名D.返回协议的名字6.Socket类的getOutputStream方法的作用是(B)。A.返回文件路径B.返回文件写出器C.返回文件大小D.返回文件读入器7.Socket类的getInputStream方法的作用是(D)。A.返回文件路径B.返回文件写出器C.返回文件大小D.返回文件读入器8.DatagramSocket类的receive方法的作用是(B)。www.khdaw.com 课后答案网www.khdaw.comA.根据网络地址接收数据包B.根据网络地址与端口接收数据包C.根据端口接收数据包D.根据网络地址与端口发送数据包四、程序填空1.下面是基于套接字的服务端程序接收客户程序请求后创建连接,服务程序将收到的信息在屏幕上打印出来,并回送给客户程序,请在标号处完成程序编写。packagecomsoft.nc.tcp.socket;importjava.io.*;importjava.net.*;publicclassServerSocketDemo{publicstaticfinalintPORT=28080;www.khaw.compublicstaticvoidmain(String[]args)throwsIOException{(1)newServerSocket(PORT)ServerSocketserversocket=(1);System.out.println("Startedserversocket:"+serversocket);try{(2)serversocket.accept()Socketsocket=(2);try{System.out.println("TCPConnectionacceptedfrom:"+socket);(3)socket.getInputStream()BufferedReaderin=newBufferedReader(newInputStreamReader((3)));PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);while(true){Stringstr=in.readLine();if(str.equals("EndCommunications")){break;}System.out.println("ReceivefromClient:"+str);out.println("EchoingfromServer:"+str);}}finally{System.out.println("CommunicationsClosing...");socket.close();}}finally{(4)serversocket.close()(4);}}}www.khdaw.com 课后答案网www.khdaw.com2.下面是基于套接字的客户端程序,客户程序向服务程序发出连接请求,在连接创建后向服务程序发送信息并接收服务程序的回声在屏幕上打印出来,请在标号处完成程序编写。importjava.io.*;importjava.net.*;publicclassClientSocketDemo{publicstaticvoidmain(String[]args)throwsIOException{InetAddressipaddress=InetAddress.getByName(null);System.out.println("ipaddress="+ipaddress);(1)newSocketwww.khaw.comSocketsocket=(1)(ipaddress,ServerSocketDemo.PORT);try{System.out.println("socket:"+socket);(2)socket.getInputStream()BufferedReaderin=newBufferedReader(newInputStreamReader((2)));PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);for(inti=0;i<10;i++){(3)out.println(3)("Message"+i);(4)in.readLine()Stringstr=(4)();System.out.println(str);}out.println("EndCommunications");}finally{System.out.println("Communicationsclosing...");socket.close();}}}五、编程题1.编写一个包含TextField和Label的JavaApplication程序,其中TextField用于接收用户输入的主机名,Label用于将这个主机的IP地址显示出来。2.编写JavaApplet程序,接受用户输入的网页地址,并与程序中事先保存的地址相比较若两者相同则使浏览器指向该网页。3.编写JavaApplet程序,访问并显示或播放在指定URL地址处的图像和声音资源。4.用Socket编程,从服务器读取几个字符,再写入本地机器且进行显示。5.使用IP组播协议实现在组播组中发送与接收数据。www.khdaw.com 课后答案网www.khdaw.com6.使用RMI设计一个分布式计算程序,由服务程序对客户程序提供的一组数据进行排序,然后由客户程序从屏幕输出。第12章JDBCJDJDBCBC与数据库访问技术与数据库访问与数据库访问技术技术习题十二www.khaw.com一、填空题1.JDBC的基本层次结构由(Java程序)、(JDBCAPI)、(JDBC驱动程序管理器)、(驱动程序)和数据库五部分组成。2.根据访问数据库的技术不同,JDBC驱动程序相应地分为(JDBC-ODBCBridge)、(JDBC-NativeAPIBridge)、(JDBC-Middleware)和(PureJDBCDriver)四种类型。3.JDBCAPI所包含的接口和类非常多,都定义在(java.sql)包和(javax.sql)包中。4.使用(Class.forName())方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。5.(java.spl.Connection)接口负责建立与指定数据库的连接。6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。7.(ResultSet)接口表示从数据库中返回的结果集。二、简答题1.名词解释:数据库、关系型数据库、字段、记录、SQL、DDL、DML、DCL、JDBC、BLOB。2.简述数据定义语言、数据操纵语言和数据查询语言的功能。3.简述四类JDBC驱动程序的特点。4.画图表示JDBC中的各种接口与类之间的关系。5.简述使用JDBC连接ODBC数据源、MicrosoftSQLServer、Oracle、MySQL和IBMDB2等数据库所对应的JDBC驱动程序名和数据库连接的URL值。6.简述使用JDBC访问数据库的基本算法。7.简述Statement接口和PreparedStatement接口的主要区别。8.简述JDBC4.0的新增特性。三、程序填空下面的程序采用JDBC方式,在MSSQLServer数据库管理系统的DBStudent数据库中,对学生表tblstudent的学号为"20063561001"和"20063561003"的学生的成绩进行修改,并将修改后的结果在屏幕输出,请完成程序编写。www.khdaw.com 课后答案网www.khdaw.compackagecomsoft.db.jdbc.mssqlserver;importjava.sql.*;publicclassUpdateRecord{publicstaticvoidmain(String[]args){StringJDBCDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//声明JDBC驱动程序类型StringconURL="jdbc:microsoft:sqlserver://127.0.0.1:1433;"+"DatabaseName=DBStudent;User=sa;Password=ok";//定义JDBC的URL对象www.khaw.comString[]sno={"20063561001","20063561003"};int[]score={100,99};try{(1)Class.forName(JDBCDriver)(1);}catch(ClassNotFoundExceptione){System.out.println("Class.forname:"+e.getMessage());}try{(2)DriverManager.getConnectionConnectioncon=(2)(conURL);//修改数据库中数据表的内容(3)con.prepareStatementPreparedStatementpsmt=(3)("UPDATEtblstudentsetscore=?wheresno=?");inti=0,idlen=sno.length;do{psmt.setInt(1,score[i]);psmt.setString(2,sno[i]);(4)psmt.executeUpdate()if((4)==1){System.out.println("修改数据表:tblstudent中学号为"+sno[i]+"的记录成功!");}else{System.out.println("错误=数据表:tblstudent中没有学号为"+sno[i]+"的记录!");}++i;}while(i

您可能关注的文档