• 96.92 KB
  • 2022-04-22 11:23:14 发布

Java程序设计课后练习答案

  • 31页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《Java程序设计》课后练习答案第一章Java概述一、选择题1.(A)是在Dos命令提示符下编译Java程序的命令,(B)是运行Java程序的命令。A.javacB.javaC.javadocD.javaw2.(D)不是Java程序中有效的注释符号。A.//B./**/C./***/D.*/*/3.(B)不是Java语言的特点。A.面向对象B.自动检查语法错误C.跨平台D.解释执行4.Java编译器会将Java程序转换为(C)A.可执行代码B.目标代码C.字节码D.机器代码5.Java源文件的扩展名是(D)A..classB..jarC..javD..java二、简答题1、Java的跨平台的含义是什么?为什么Java可以跨平台?Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。以下图展示了Java程序从编译到最后运行的完整过程。2、简述Java语言的特点Java具有以下特点:1)、简单性Java语言的语法规则和C语言非常相似,只有很少一部分不同于C语言,并且Java还舍弃了C语言中复杂的数据类型(如:指针和结构体),因此很容易入门和掌握。31 1)、可靠性和安全性Java从源代码到最终运行经历了一次编译和一次解释,每次都有进行检查,比其它只进行一次编译检查的编程语言具有更高的可靠性和安全性。2)、面向对象Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。3)、平台无关和解释执行Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。Java编译器将Java源代码文件编译后生成字节码文件(一种与操作系统无关的二进制文件)。字节码文件通过Java虚拟机(JVM)里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。下图展示了Java程序从编译到最后运行的完整过程。4)、分布式分布式包括数据分布和操作分布,而Java支持WWW客户机/服务器计算模式,因此也支持这两种分布式。5)、多线程Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。三、综合编程题1、请编写一个简单的Java程序能够输出“这是我的第一个Java程序”。(注意为程序添加合适的注释和文档注释)。/***第一个java程序*/publicclassDemo{/***main方法,程序的起点*/publicstaticvoidmain(String[]args){//向控制台输出System.out.println("这是我的第一个Java程序");}}第二章Java语法基础31 一、选择题1.下面哪个单词是Java语言的关键字(B)?A.c2cX.}#f%W3O9@$@7cDoubleB.thisC.stringD.bool2.下面属于Java关键字的是(D)。A.NULLB.IFC.DoD.goto3.在启动Java应用程序时可以通过main()方法一次性地传递多个参数。如果传递的参数有多个,可以用空格将这些参数分割;如果某一个参数本身包含空格,可以使用(B)把整个参数引起来。A.单引号B.双引号A2@!l&h&I:Q$a"H4o4S4.下面哪个是Java语言中正确的标识符(BD)。A.5xB.$xC.abc@D.com5.Java语言中,下列标识符错误的是(D)。A._*A,/A"|%labcB.abcC.ABCD.5abc6.在Java中,整型常量不可以是(A)。A.!r;*z&V"D0T0`)_doubleB.LongC.intD.byte7.在Java中,不属于整数常量的是(D)。A.:n"h:R-C+D100B.100LC.0x100AD.6.0f8.下面哪个语句能定义一个字符变量chr(B)。A.charchr=’abcd’;B.charchr=’uabcd’;C.charchr=”abcd”;D.charchr=uabcd;9.下面哪个是对字符串s1的不正确定义(CD)。A.Strings1=”abcd”;B.Strings1;C.2V2X2U0F4*x)Strings1=‘abcd’;D.Strings1=”abcd”;10.下面哪个范围是char型的取值范围(C)。A.-256~255B.-(2^15)~(2^15)-1C.u0000’~‘uffff’D.0~3276711.下面哪条语句不能定义一个float型的变量f1(ABD)。A.-y"c!B&Q$@)m"W-pfloatf1=3.1415E10B.floatf1=3.14C.floatf1=3.1415FD.f1=3.14F12.下列运算结果为float的是(C)。A.100/10B.100*10C.100.0+10D.100-1013.数组中可以包含什么类型的元素(D)。A.int型B.string型C.数组D.以上都可以14.Java中定义数组名为xyz,下面哪项可以得到数组元素的个数(B)。A.xyz.length()B.xyz.lengthC.len(xyz)D.ubound(xyz)15.下面哪条语句定义了3个元素的数组(A)。A.int[]a={20,30,40};B.inta[]=newint(3);C.int[3]array;D.int[]arr;二、简答题1.Java有哪些基本的数据类型?写出这些基本数据类型所占用的最大空间(用字节描述)。2.说明Java字符编码的类型与特点。3.写出Java中六个常用的转义字符。4.下面的几个标示符哪些是正确的,哪些是错误的,如果是错误的,请说明原因。MyClass,_isHis,3JavaProgram,_$asdf,Java-Visual-Machine5.说出常量与变量的定义并举例说明。6.什么是强制类型转换?并说明其运用场合。31 1.描述Java程序的构成。如何判断Java程序的主类?下面的程序有哪些错误并改正,该程序的源代码应当保存为什么名字的文件?publicclassMyClass{publicstaticvoidmain(){System.out.printIn("mynameis…");}System.out.printIn(“theend!”);}2.结构化程序设计有哪三种基本流程?分别对应Java中的那些语句?3.在一个循环中使用break,continue,return的差别。4.数组的定义,特点与分类。如何进行数组的初始化?31 第三章面向对象的实现一、选择题1.在Java中,用package说明一个包时,该包的层次结构必须是(B)。A.与文件的结构相同B.与文件的目录层次相同C.与文件的类型相同D.与文件大小相同2.下列构造方法的调用方式中,正确的是(C)。A.按照一般方法调用B.由用户直接调用C.可通过new自动调用D.被系统调用3.int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是(D)。A.publicintMAX_LENGTH=100B.finalintMAX_LENGTH=100C.publicconstintMAX_LENGTH=100D.publicfinalintMAX_LENGTH=1004.在Java中,以下叙述不正确的是(B)A.构造方法名与类名相同。B.构造方法不是用来完成初始化的。C.构造方法由new操作调用,而不能被用户直接调用。D.构造方法没有返回类型。5.在Java中,下面的叙述哪个是不正确的?(D)A.类的静态方法可以在该类的对象被创建前调用B.类的静态方法不能访问该类的非静态方法C.abstract修饰符可以出现在类或方法的前面,但不能出现在变量之前D.final修饰符可以出现在类或变量之前,但不能出现在方法之前6.在Java里,下列选项(D)不是实现面向对象思想的机制。A.封装B.继承C.多态D.数据类型转换7.类Worker是类Person的子类,Worker构造方法中有一句"super();",该语句是什么意思?(C)A.调用类Worker中定义的super()方法B.调用类Person中定义的super()方法C.调用类Person的构造函数D.语法错误8.给定Java程序,如下:编译运行Test.java,结果是(C)。publicclassTest{privatestaticfinalintcounter=10;publicstaticvoidmain(String[]args){System.out.println(counter++);}}A.10B.编译错误C.11D.运行时出现异常9.给定如下Java代码,编译时会在(D)出现错误。(只选择一项)classParent{}classChildextendsParent{31 publicstaticvoidmain(String[]args){Parentp1=newChild();//第一行Parentp2=newParent();//第二行Childc1=newChild();//第三行Childc2=newParent();//第四行}}A.第一行B.第二行C.第三行D.第四行1.在Java中,某类方法使用下列(BC)访问修饰符修饰后,可以被其的子类访问。A.privateB.protectedC.publicD.friendly2.在Java语言中,如果你有下面的类定义:abstractclassShape{abstractvoiddraw();}classSquareextendsShape{}以下描述正确的是(B)A.一切成功编译B.Shape可以编译,Square不能编译C.Square可以编译,Shape不能编译D.Square,Shape都不能编译3.分析下列Java代码:classA{publicstaticvoidmain(String[]args){method();}staticvoidmethod(){System.out.println("Hello");System.exit(0);System.out.println("good-bye");}}编译运行后,输出结果是(A)。A."Hello"B."good-bye"C."Hello"后面是"good-bye"D.代码不能编译4.下表是final修饰符与变量、方法、类等一起作用的结果的对应表,但是对应关系存在错误,请选择正确的对应关系。(C)概念作用1变量A不能再产生子类2方法B一旦赋值,就不能更改3类C不能在子类中覆盖31 A.1-A2-B3-CB.1-C2-A3-BC.1-B2-C3-AD.1-C2-B3-A1.有以下程序:publicclassConstOver{publicConstOver(intx,inty,intz){}}下面哪个方法重载了上面的ConstOver构造方法?(B)A.protectedintConstOver(){}B.privateConstOver(intz,inty,bytex){}C.publicobjectConstOver(intx,inty,intz){}D.publicvoidConstOver(bytex,bytey,bytez){}2.有以下程序:classBaseClass{privatefloatx=1.0f;publicfloatgetVar()(returnx;)}classSubclassextendsBaseClass{privatefloatx=2.0f;//insertcodehere}下面哪个方法加到程序中的“//insertcodehere”位置是有效的重定义父类的方法。(B)A.protectedfloatgetVar(){returnx;}B.publicfloatgetVar(){returnx;}C.protectedfloatdoublegetVar(){returnx;}D.publicfloatgetVar(floatf){returnf;}3.指出下列程序运行的结果(B)publicclassExample{Stringstr=newString("good");char[]ch={"a","b","c"};publicstaticvoidmain(String[]args){  Exampleex=newExample();  ex.change(ex.str,ex.ch);  System.out.print(ex.str+"and");  System.out.print(ex.ch);}publicvoidchange(Stringstr,charch[]){  str="testok";  ch[0]="g";}}A.goodandabcB.goodandgbcC.testokandabcD.testokandgbc31 1.下列哪些语句关于内存回收的说明是正确的?(B)A.程序员必须创建一个线程来释放内存;B.内存回收程序负责释放无用内存;C.内存回收程序允许程序员直接释放内存;D.内存回收程序可以在指定的时间释放内存对象。2.创建一个名为“MyClass.java”的文件,该文件中只有一个可被整个工程中的所有类访问的类,那么该类的正确声明应为:(C)A.privateclassMyClassextendsObjectB.classTestClassextendsObjectC.publicclassMyClassD.publicclassTestClass3.下列叙述中,错误的是(A)A.内部类的名称与定义它的类的名称可以相同B.内部类可用abstract修饰C.内部类可作为其他类的成员D.内部类可访问它所在类的成员4.用于在子类中调用被重写的父类方法的关键字是(B)A.thisB.superC.ThisD.Super5.下面程序输出结果是(A)publicclassDelta{staticbooleanfoo(charc){System.out.print(c);returntrue;}publicstaticvoidmain(String[]argv){inti=0;for(foo("A");foo("B")&&(i<2);foo("C")){i++;foo("D");}}}A.ABDCBDCBB.ABCDABCDC.编译错误D.运行时异常一、程序阅读题1、写出以下程序的运行结果:classEgg{protectedclassYolk{publicYolk(){System.out.println("Egg.Yolk()");31 }}privateYolky;publicEgg(){System.out.println("NewEgg()");y=newYolk();}}publicclassBigEggextendsEgg{publicclassYolk{publicYolk(){System.out.println("BigEgg.Yolk()");}}publicstaticvoidmain(String[]args){newBigEgg();}}运行结果:NewEgg()Egg.Yolk()1、写出以下程序的结果:publicclassTest{   privatestaticvoidprintArray(int[]arr)  {       for(inti=0;i10)throwException("somethingwrong!");B.if(i>10)throwExceptione("somethingwrong!");C.if(i>10)thrownewException("somethingwrong!");D.if(i>10)thrownewExceptione("somethingwrong!");5.分析下列Java代码:classA{publicstaticvoidmain(String[]args){method();}staticvoidmethod(){try{System.out.println("Hello");System.exit(0);}finally{System.out.println("good-bye");}}}编译运行后,输出结果是(A)A.HelloB.good-byeC.HelloD.代码不能编译good-bye6.关于捕获错误的语法try-catch-finally的下列描述正确的是(C)。A.try必须和catch搭配使用B.try可以单独使用C.try-finally可以搭配使用D.在try块后如果定义了finally,则不能再定义catch块7.在Java中,假定有一个包含引起异常(不是一个RuntimeException)的代码的方法,用什么方式告诉方法的调用者要捕获该异常。(B)A.throwExceptionB.throwsExceptionC.newExceptionD.不用特别指定31 1.考虑下列JAVA代码:classA{publicstaticvoidmain(String[]args){try{System.out.println("Hello,World!");}}}这段代码错误的原因是(A)。A.没有catch和finally块B.没有抛出异常的代码不能出现在try代码块内C.如果没有catch块而使用try,main()会总是抛出异常D.classA没有throwsIOException2.考虑一下代码,编译运行之后,会(D)Strings=null;System.out.println(s.charAt(0));A.输出nullB.没有输出C.编译错误D.编译成功,但是运行时报NullPointerException异常3.研究下面的Java代码:publicclasstestException{publicstaticvoidmain(String[]args){inta[]={0,1,2,3,4};intsum=0;try{for(inti=1;i<6;i++)sum=sum+a[i];System.out.println("sum="+sum);}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("数组越界");}finally{System.out.println("程序结束");}}}输出结果将是(C)。A.10数组越界程序结束B.10程序结束C.数组越界程序结束D.程序结束31 第五章java.lang包和字符串一、选择题1.Java编程所必须的默认引用包为(B)A.java.sys包B.java.lang包C.java.new包D.以上都不是2.在Java中,所有类的根类是(A)A.java.lang.ObjectB.java.lang.ClassC.java.applet.AppletD.java.awt.Frame3.设有下面两个赋值语句:x1=Integer.parseInt("123");x2=Integer.valueOf("123").intValue();下述说法正确的是(D)。A.x1为int型变量,x2为Integer类的对象B.x2为int型变量,x1为Integer类的对象C.x1、x2均为Integer类的对象D.x1、x2均为int型变量4.在Java中,存放字符串常量的对象属于(B)类对象。  A.Character                 B.StringC.StringBufferD.Vector5.已知如下定义:Stringstr="Ilove";下面(D)表达式是合法的。A.charch=str[0];B.intlen=str.length;C.Stringto=str.delete(1,2);D.str+="China";6.设有以下程序段,执行后,屏幕输出(A)。Strings1="Ilove"+"China";Strings2=newString(s1);if(s1==s2)System.out.println("==");if(s1.equals(s2)==true)System.out.print("equals");A.equalsB.==C.==equalsD.不输出7.下列方法中,不属于类String的方法是(D)。A.toLowerCase()B.replace()C.charAt()D.append()8.有下列程序:publicclassaa{publicstaticvoidmain(String[]args){Strings="18.03";try{doublenumber1=Double.parseDouble(s);System.out.print(number1);intnumber2=Integer.parseInt(s);System.out.println(""+number2);}catch(NumberFormatExceptionnfe){System.out.println("Sorry");}catch(Exceptione){31 }}}执行结果是(C)。A.18.03B.SorryC.18.03SorryD.程序编译错误31 第六章java.lang包和字符串一、选择题1.下列(A)集合不能含有重复元素。A.SetB.ListC.MapD.Collection2.当元素个数固定时,使用(D)集合查找效率最高。A.SetB.ListC.MapD.Arrays3.你希望存储少量数据并能快速访问.你并不需要排序这些数据,那种数据结构最适合这种需求?(D)A.TreeSetB.HashMapC.LinkedListD.数组4.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(B)A.ArrayListmyList=newObject();B.ListmyList=newArrayList();C.ArrayListmyList=newList();D.ListmyList=newList();5.关于HashMap和TreeMap类,判断下列那种说法是正确的?(A)A.它们都能方便地定位映射中的值对象B.它们都实现了SortedMap接口C.它们都能高效地按照顺序遍历键D.以上说法都不对6.下列哪个不是Iterator接口所定义的方法?(D)A.hasNext()B.next()C.remove()D.nextElement()7.关于链表结构,陈述错误的是哪个?(B)A.链表可动态增长B.在链表中查找对象是最有效的C.链表中的元素可以重复D.通常情况下,向链表中插入元素的效率高于向ArrayList中插入元素的效率8.Java语言的集合框架类定义在(B)语言包中。A.java.langB.java.utilC.java.arrayD.java.collections9.Set集合如何处理重复的元素?(B)A.如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,将抛出异常B.如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,add方法返回falseC.如果试图向Set集合中添加一个与集合中已有元素值相同的元素时,将发生编译错误D.可以在Set集合中添加一个与集合中已有元素值相同的元素10.下列哪项是正确的?(D)  A.Collection是集合继承体系中根类  B.Collection接口中提供了enumerator方法C.interator方法返回Vector类的对象D.实现Set接口的类对象中,每个元素的值均不相等11.给定下列java代码:importjava.util.*;publicclassLetterASort{publicstaticvoidmain(String[]args){31 ArrayListstrings=newArrayList();strings.add("aAaA");strings.add("AaA");strings.add("aAa");strings.add("AAaa");Collections.sort(strings);for(Strings:strings){System.out.print(s+"");}}}对该程序编译运行,结果是(C)。A.编译失败B.aAaAaAaAAaaAaAC.AAaaAaAaAaaAaAD.AaAAAaaaAaAaAaE.aAaAaAaAaAAAaaF.运行时抛出异常1.给定下列java代码://在这里插入privateNmin,max;publicNgetMin(){returnmin;}publicNgetMax(){returnmax;}publicvoidadd(Nadded){if(min==null||added.doubleValue()max.doubleValue())max=added;}}选择以下哪两行中任一行插入指定位置,程序可以通过编译。(AC)A.publicclassMinMax{B.publicclassMinMax{C.publicclassMinMax{D.publicclassMinMax{E.publicclassMinMax{F.publicclassMinMax{2.给定下列java代码:importjava.util.*;publicclassOld{publicstaticObjectget(Listlist){returnlist.get(0);}}31 以下选项中,哪三个能编译成功?(ADE)A.Objecto=Old.get(newLinkedList());B.Objecto=Old.get(newLinkedList());C.Strings=Old.get(newLinkedList());D.Objecto=Old.get(newLinkedList());E.Strings=(String)Old.get(newLinkedList());1.给定下列java代码:publicvoidtakeList(Listlist){//在这里插入}将以下哪些语句插入指定位置,能够编译成功?(D)A.list.add("STRING");B.list=newArrayList();C.list=newArrayList();D.Strings=list.get(0);E.Objecto=list;2.给定下列java代码:publicclassScoreimplementsComparable{privateintwins,losses;publicScore(intw,int1){wins=w;losses=1;}publicintgetWins(){returnwins;}publicintgetLosses(){returnlosses;}publicStringtoString(){return"<"+wins+","+losses+">";}//在这里插入代码}以下哪个方法能完成这个类?(B)A.publicintcompareTo(Objecto){/*这里是实现代码*/}B.publicintcompareTo(Scoreother){/*这里是实现代码*/}C.publicintcompare(Scores1,Scores2){/*这里是实现代码*/}D.publicintcompare(Objecto1,Objecto2){/*这里是实现代码*/}3.给定下列java代码:publicstaticvoidappend(Listlist){list.add(”0042”);}publicstaticvoidmain(String[]args){ListintList=newArrayList();append(intList);System.out.println(intList.get(0));}对该程序编译运行,结果是(D)。A.42B.0042C.运行时发生异常D.编译错误31 一、阅读程序,并填空。1.有以下程序:publicclassGen{privateTobject;publicGen_(Tobject){this.object=object;}publicTgetObject(){returnobject;}publicstaticvoidmain(String[]args){Genstr=newGen(“[answer]”);Genintg=newGen(42);System.out.println(str.getObject()+“=”+intg.getObject());}}该程序运行结果为42,请将以下选项填入下划线内。注意每个选项均可重复选择。A.GenB.GenC.GenD.?E.T2.有以下程序:importjava.util.*;publicclassMyIntimplementsComparable{privateinti;publicMyInt(inti){this.i=i;}publicStringtoString(){returnInteger.toString(i);}publicintcompareTo(Objecto){MyInti2=(MyInt)o;returni-i2.i;}publicstaticvoidmain(String[]args){ArrayListlist=newArrayList();list.add(newMyInt(2));list.add(newMyInt(1));Collections.sort(list);System.out.println(list);}}该程序运行结果为[1,2],请将以下选项填入下划线内。A.implementsB.ObjectC.Comparable31 A.protectedB.publicC.i-i2.iD.iE.i2.i–iF.compare(MyInto,MyInti2)G.compare(Objecto,Objecti2)H.compareTo(MyInto)I.compareTo(Objecto)一、综合编程题1.设有一数列:a1=3,a2=8,……,an=2an-1+2an-2,使用堆栈结构输出an的若干项。importjava.util.HashMap;publicclassNumNameMap{publicstaticvoidmain(String[]args){HashMapstu=newHashMap();stu.put("1","list");stu.put("2","Bill");stu.put("3","Ann");System.out.println(stu);}}2.有如下的类:publicclassNumberList{privateArrayListal;publicNumberList(int[]value){//将数组value中的元素添加到al中}Mapcount(){//统计al中每个元素出现的次数,并将“元素值,这个元素出现的次数”作为键值对保存到Map对象中}}要求如下:(1)按注释中的要求实现其中的方法。(2)定义一个测试类,用以验证NumberList类的正确性。importjava.util.ArrayList;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Map;classNumberList{31 privateArrayListal;publicNumberList(int[]value){//将数组value中的元素添加到al中al=newArrayList();for(inti=0;icount(){//统计al中每个元素出现的次数,并将“元素值,这个元素出现的次数”作为键值对保存到Map对象中HashSetset1=newHashSet();set1.addAll(al);HashMaphm=newHashMap();Iteratorit=set1.iterator();while(it.hasNext()){intn=(int)it.next();hm.put(n,0);}it=al.iterator();while(it.hasNext()){intn=(int)it.next();hm.put(n,(int)hm.get(n)+1);}returnhm;}publicstaticvoidmain(String[]args){int[]arr={1,3,2,4,7,1,1,3,4,8};NumberListnl=newNumberList(arr);Maphm=nl.count();System.out.println(hm);}}31 第七章输入输出和序列化一、选择题1.下面关于System.out的说法哪个正确?(ABC)A.System.out是一个PrintStreamB.System.out是一个OutputStreamC.System.out是一个FilterOutputStreamD.System.out不是一个PrintStream2.下面哪个语句可以建立文件“file.txt”的字节输入流?(A)A.InputStreamin=newInputStream("file.txt")B.InputStreamin=newFileReader("file.txt")C.FileInputStreamin=newFileOutputStream("file.txt")D.FileInputStreamin=newFileInputStream("file.txt")3.当前文件系统中已经存在了文件file.txt,该文件包涵有ASCII文本,代码片段如下:try{Filef=newFile("file.txt");outputStreamout=newFileOutputStream(f,true);}catch(IOException){}结果是什么?(B)A.代码不能编译B.代码可以编译并运行,对该文件不会有改变C.代码可以编译并运行,并将该文件的长度设置为0D.抛出异常,因为该文件没有关闭E.代码可以编译运行,并从文件系统中删除该文件。4.下面哪个选项可以将“hello”字符写入文件file.txt的末尾?(B)A.OutputStreamout=newFileOutputStream("file.txt");Out.writeBytes("hello");B.OutputStreamos=newFileOutputStream("file.txt",true);DataOutputStreamout=newDataOutputStream(os);out.writeBytes("hello");C.OutputStreamos=newFileOutputStream("file.txt");DataOutputStreamout=newDataOutputStream(os);out.writeBytes("hello");D.OutputStreamos=newOutputStream("file.txt",true);DataOutputStreamout=newDataOutputStream(os);out.writeBytes("hello");5.哪个类是FilterOutputStream类构造器的合法参数?(B)A.InputStreamB.OutputStreamC.FileD.RandomAccessFileE.StreamTokenizer6.下面关于java.io.Serializable的说法哪个不正确?(C)A.一个对象在一个JVM被序列化后,可以在另外一个JVM被反序列化31 A.声明成transient的数据成员不能被序列化和反序列化B.声明成static的数据成员,因为该数据成员是对象内部的成员,所以仍然可以被序列化C.如果一个父类可以被序列化,则所有继承该类的子类也可以被序列化1.分析下面给出的代码结果是什么?importjava.io.*;publicclassForestimplementsSerializable{privateTreetree=newTree();publicstaticvoidmain(String[]args){Forestf=newForest();try{FileOutputStreamfs=newFileOutputStream("Forest.ser");ObjectOutputStreamos=newObjectOutputStream(fs);os.writeObject(f);os.close();}catch(Exceptionex){ex.printStackTrace();}}}classTree{}结果是什么?(B)A.代码不能编译B.代码可以编译,运行时抛出异常C.一个Forest实例被序列化D.一个Forest实例和Tree实例都被序列化2.分析下面的代码:1)importjava.io.*;2)publicclassFooimplementsSerializable{3)publicintx,y;4)publicFoo(intx,inty){this.x=x;this.y=y;}5)privatevoidwriteObject(ObjctOutputStreams)throwsIOException{6)s.writeInt(x);7)s.writeInt(y);8)}9)privatevoidreadObject(ObjectInputStreams)throwsIOException,ClassNotFoundException{10)//insertcodehere11)}12)}下面给出的选择中,在10行处插入哪些代码,可以使该类实现正确的序列化和反序列化(D)A.s.defaultReadObject();31 A.this=s.defaultReadObject(),B.y=s.readInt();x=s.readInt();C.x=s.readInt();y=s.readInt();1.假定下面代码中的serializeBanana()和deserializeBanana()方法可以正确的执行,分析下面的代码,结果是什么?(C)importjava.io.*;classFoodimplementsSerializable{intgood=3;}classFruitextendsFood{intjuice=5;}publicclassBananaextendsFruit{intyellow=4;publicstaticvoidmain(String[]args){Bananab=newBanana();Bananab2=newBanana();b.serializeBanana(b);//assumecorrectserializationb2=b.deserializeBanana();//assumecorrectSystem.out.println("restore"+b2.yellow+b2.juice+b2.good);}//moreBananamethodsgohere}A.restore400B.restore403C.restore453D.Compilationfails31 第八章GUI图形用户界面编程一、选择题1.以下哪个不是Swing容器组件?(C)A.JFrameB.JPanelC.JTextAreaD.JScrollPane2.如果想在界面上创建一个如图8-所示的效果,需要拖放哪些组件?(CD)(选两项)图8-33鼠标事件程序A.JComboBoxB.JTextFieldC.JTextAreaD.JScrollPane3.以下哪个不是Java事件处理机制的元素?(D)A.事件B.事件监听器C.事件源D.事件处理程序4.以下关于布局管理器哪句是错误的?(D)A.FlowLayout将组件按顺序从左到右、从上到下进行排列B.BorderLayout布局将组件按照上、下、左、右、中进行排列C.GridLayout布局将组件按照行和列的矩阵进行排列D.BorderLayout布局中允许放置多于5个的组件5.以下那句描述不正确?(D)A.Swing组件是在AWT基础上发展起来的B.Swing组件是纯Java的轻量型组件C.所有的Swing组件均已“J”开头D.Swing组件所在的包在java.swing中6.哪个组件可以从一组选项中选择多个选项?(C)A.JRadioButtonB.JComboBoxC.JCheckBoxD.JTextField7.以下哪一个是JTable的父类?(A)A.JComponent31 A.JContainerB.ComponentC.Container1.以下菜单类中哪个是父类?(D)A.JCheckBoxMenuItemB.JRadioButtonMenuItemC.JMenuD.JMenuItem31 第九章JDBC数据库编程一、选择题1.用于创建数据库连接的接口是哪个?(B)A.ConnectionB.DriverManagerC.StatementD.ResultSet2.用于执行SQL语句并返回执行结果的接口是哪个?(C)A.ConnectionB.DriverManagerC.StatementD.ResultSet3.用于保存查询结果的接口是哪个?(D)A.ConnectionB.DriverManagerC.StatementD.ResultSet4.访问数据库必须要捕获的异常是哪个?(B)A.IOExceptionB.SQLExceptionC.ClassNotFoundExceptionD.EOFException5.以下哪个不是使用预编译接口的优点?(D)A.速度快B.一次编译,多次执行C.效率高D.代码量少二、简答题1.简述JDBC技术连接数据库的优点。答:JDBC(JavaDatabaseConnectivity,Java数据库连接)技术是Sun公司推出的一种专门访问数据库的API。它是由一组用Java编程语言编写的类和接口组成,支持基本SQL语句,提供多样化的数据库连接方式,可连接不同的数据库。JDBC技术是用来Java语言编写的访问数据库标准接口,使用这样的API编写的应用程序无论从安全性、健壮性、可移植性都是具有优势的2.简述JDBC技术连接数据库的步骤。//--1导入包importjava.sql.*;try{//--2加载驱动程序Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//--3创建数据库连接Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDB";Connectionconn=DriverManager.getConnection(url,"sa","");returnconn;31 }catch(ClassNotFoundExceptionex1){//--4捕获ClassNotFoundException异常ex1.printStackTrace();returnnull;}catch(SQLExceptionex2){//--5捕获SQLException异常ex2.printStackTrace();returnnull;}1.在SQLServer里创建一个名为MyDB的数据库,数据库里有一张Users表,表中有UserID,UserName两个字段,请写出连接MyDB数据库和访问Users表中数据的代码。2.//导入java.sql包3.importjava.sql.*;4.publicclassDBAccess{5.publicstaticConnectionJavaCon(){6.try{7.//加载驱动程序8.Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");9.//创建数据库连接10.Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDB";11.Connectionconn=DriverManager.getConnection(url,"sa","");12.returnconn;13.}catch(ClassNotFoundExceptionex1){14.//捕获ClassNotFoundException异常15.ex1.printStackTrace();16.returnnull;17.}catch(SQLExceptionex2){18.//捕获SQLException异常19.ex2.printStackTrace();20.returnnull;21.}22.}23.}24.publicstaticvoidmain(String[]args){25.//调用纯Java方式连接数据库26.Connectionconn=JavaCon();27.try{28.//在连接对象的基础上创建会话对象29.Statementstmt=conn.createStatement();30.Stringsql="Select*fromUsers";31.//执行查询SQL语句,返回查询的结果集32.ResultSetrs=stmt.executeQuery(sql);33.//rs结果集中还有下一条记录31 1.while(rs.next()){2.//声明保存查询结果集中每行数据的Vector对象3.Vectorline=newVector();4.//将查询结果集中的每行数据保存到line对象里5.for(inti=1;i<=4;i++){6.line.add(rs.getObject(i));7.}8.//将每行数据的line对象添加到data对象中9.data.add(line);10.}11.//关闭结果集12.rs.close();13.//关闭会话对象14.stmt.close();15.//关闭连接对象16.conn.close();17.returndata;18.}catch(SQLExceptionex){19.ex.printStackTrace();20.returnnull;21.}22.}23.}31 第十章多线程一、选择题1.线程同步的方法有多种,下面不正确的是(A)。A.setPriority()方法B.sleep()方法C.notify()方法D.notifyAll()方法2.线程被阻塞可能是多方面原因造成的,下面方法中哪一种不能引起线程阻塞(D)。A.调用sleep()方法,使线程进入睡眠状态。B.用suspend()方法暂停纯种的执行。C.用wati()方法暂停线程的执行。D.调用setPriority()方法。3.下面不是产生死锁的必要条件的是(B)。A.互斥条件B.不可抢占C.占有CPU并运行D.循环等待4.下面哪个操作不能使线程从等待阻塞状态进入到对象阻塞状态(D)。A.等待阻塞状态下的线程被notify()方法调用。B.等待阻塞状态下的线程被Interrupt()方法中断。C.等待时间到。D.等待阻塞状态下的线程调用wait()方法。5.下面说法错误的是(B)。A.Java中的第一个线程都属于某个线程组。B.线程只能在其创建时设置其线程组。C.线程创建之后,可以从一个线程组转移到另一个线程组。D.新建线程默认情况下属于其父线程所属的线程组。二、问答题1.举例说明什么是多线程?2.线程进程相比,有什么优越性?3.举例说明创建线程的两种方法?4.sleep()方法和wait()方法有什么区别?5.当一个线程进入一个对象的synchronized方法后,其他线程是否可进入此对象的其他方法?6.简述线程的生命周期?7.线程的优先级如何得知,如何设置,主线程的优先级是多少?8.如何理解线程抢占式调度和线程轮转三、编程题1.模拟一个电子时钟,它可以在任何时候被启动或停止,并可独立运行。这个类称为Clock类,它继承Label类。这个类有一个Thread类型的clocker域,以及start()、stop()和run()方法。在run()方法的while循环中每隔一秒就把系统时间显示为label文本。构造方法初始化时,把Label设为当前系统时间。2.编写一个龟兔赛跑的多线程程序,单击按钮龟兔开始运行。3.编写一个程序,让一个小球在JFrame中滚动,当撞到边缘时则选择一个角度反弹回去。31 第十一章网络编程一、选择题1.在TCP/IP中解决计算机之间的通信问题的是(A)A.网络层B.应用层C.数据链路层D.传输层2.下面哪种方法能够建立一个主机IP为202.116.88.168端口1001,本机IP为214.66.115.88端口为1008的Socket对象(B)A.Socketsocket=newSocket(“202.116.88.168”,1001);B.InetAddressaddr=InetAddress.getByName(“214.66.115.88”);Socketsocket=newSocket(“202.116.88.168”,1001,addr,1008);C.InetAddressaddr=InetAddress.getByName(“202.116.88.168”);Socketsocket=newSocket(“214.66.115.88”,1008,addr,1001);D.Socketsocket=newSocket(“214.66.115.88”,1008);3.下面(D)方法能够正确建立一个地址为202.114.7.90侦听端口为1008最大连接数为10的ServerSocket对象。A.ServerSocketsocket=newServerSocket(1008);B.ServerSocketsocket=newServerSocket(1008,10);C.InetAddressaddr=InetAddress.getByName(“localhost”);ServerSocketsocket=newServerSocket(1008,10,addr);D.InetAddressaddr=InetAddress.getByName(“202.114.7.90”);ServerSocketsocket=newServerSocket(1008,10,addr);4.如果本机拥有多个IP地址,则执行以下代码的结果是(A)InetAddressaddrs[]=InetAddress.getAllByName(“localhost”);for(inti=0;i

您可能关注的文档