JAVA考试题库第六章
- 格式:pdf
- 大小:133.55 KB
- 文档页数:10
Java语言程序设计第六章课后习题答案1.将本章例6-1至6-18中出现的文件的构造方法均改为使用File类对象作为参数实现。
个人理解:File类只能对整文件性质进行处理,而没法通过自己直接使用file.Read()或者是file.write()类似方法对文件内容进行写或者读取。
注意:是直接;下面只提供一个例2变化,其他的你自己做,10几道啊,出这题的人真他妈有病。
import java.io.*;public class test6_2{public static void main(String[] args) throws IOException { String fileName = "D:\\Hello.txt";File writer=new File(fileName);writer.createNewFile();BufferedWriter input = new BufferedWriter(newFileWriter(writer));input.write("Hello !\n");input.write("this is my first text file,\n");input.write("你还好吗?\n");input.close();}}运行结果:(电脑系统问题,没法换行,所以一般使用BuffereWriter中newLine()实现换行)2.模仿文本文件复制的例题,编写对二进制文件进行复制的程序.// CopyMaker类import java.io.*;class CopyMaker {String sourceName, destName;BufferedInputStream source;BufferedOutputStream dest;int line;//打开源文件和目标文件,无异常返回trueprivate boolean openFiles() {try {source = new BufferedInputStream(newFileInputStream( sourceName ));}catch ( IOException iox ) {System.out.println("Problem opening " + sourceName );return false;}try {dest = new BufferedOutputStream(newFileOutputStream( destName ));}catch ( IOException iox ){System.out.println("Problem opening " + destName );return false;}return true;}//复制文件private boolean copyFiles() {try {line = source.read();while ( line != -1 ) {dest.write(line);line = source.read();}}catch ( IOException iox ) {System.out.println("Problem reading or writing" );return false;}return true;}//关闭源文件和目标文件private boolean closeFiles() {boolean retVal=true;try { source.close(); }catch ( IOException iox ) {System.out.println("Problem closing " + sourceName );retVal = false;}try { dest.close(); }catch ( IOException iox ) {System.out.println("Problem closing " + destName );retVal = false;}return retVal;}//执行复制public boolean copy(String src, String dst ) {sourceName = src ;destName = dst ;return openFiles() && copyFiles() && closeFiles();}}//test6_2public class test6_2{public static void main ( String[] args ) {String s1="lin.txt",s2="newlin.txt";if(new CopyMaker().copy(s1, s2))S ystem.out.print("复制成功");elseS ystem.out.print("复制失败");}}运行前的两个文本:lin.txt和newlin.txt(为空)运行后:3.创建一存储若干随机整数的文本文件,文件名、整数的个数及范围均由键盘输入。
第六章异常和异常处理一、选择题1、下列关于异常和异常类的描述中,错误的是 D 。
A.异常是某种异常类的对象B.异常类代表一种异常事件C.异常对象中包含有发生异常事件的类型等重要信息D.对待异常的处理就是简单地结束程序2、下列关于异常处理的描述中,错误的是 C 。
A.程序运行时出现的异常是通过系统默认的异常处理程序进行处理的。
B.在程序中可以使用try-catch语句捕捉异常和处理异常事件C.对于捕获的异常只能在当前方法中处理D.使用throw语句可将异常抛出到调用当前方法的方法中处理二、简答题1、简述Java的异常处理机制。
Java系统中定义一些用来处理异常的类,称为异常类,该类中通常包含产生某种异常的信息和处理异常的方法等内容。
当程序运行中发生了可识别的异常时(该错误有一个异常类与之相对应时)系统就会产生一个相应的该异常类的对象,简称异常。
系统中一旦产生了一个异常,便去寻找处理该种异常的处理程序,以保证不产生死机,从而保证了程序的安全运行。
这就是Java的异常处理机制.三、写出运行结果题1、public class Exam6_4{ public static void main(String args[]){ fun(0);fun(1);fun(2);fun(3);}static void fun(int i){ System.out.println("调用方法:fun"+i);try{if(i==0) System.out.println("没有异常");else if(i==1){int a=0; int b=10; b/=a;}else if(i==2){int m[]=new int[5]; m[5]=100;}else if(i==3){String str="56k9"; intn=Integer.parseInt(str);}}catch(ArithmeticException e){System.out.println("捕捉异常:"+e.getMessage());} catch(ArrayIndexOutOfBoundsException e){System.out.println("捕捉异常:"+e);}catch(NumberFormatException e){System.out.println("捕捉异常:"+e);}finally{System.out.println("处理完毕! ");}}}2、public class Exam6_5{ public static void main(String args[]){ try{fun1();}catch(ArithmeticException e){System.out.println("捕捉异常:"+e.getMessage());} try{fun2( );}catch(ArrayIndexOutOfBoundsException e){System.out.println("捕捉异常:"+e);}finally {System.out.println("处理完毕! ");}}static void fun1() throws ArithmeticException{ System.out.println("调用方法:fun1");int a=0; int b=10; b/=a;throw new ArithmeticException();}static void fun2() throws ArrayIndexOutOfBoundsException { System.out.println("调用方法:fun2");int m[]=new int[5]; m[5]=100;throw new ArrayIndexOutOfBoundsException();}}。
第六章异常和异常处理一选择题6・1 .下列关于异常的描述中,错误的是(B)A.异常是一种经过修正后程序仍可执行的错误B.异常是一种程序在运行中出现的不可恢复执行的错误C.不仅Java语言有异常处理,C++语言也有异常处理D.岀现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行6・2.下列关于异常处理的描述中,错误的是(D)A.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能用当前方法中处理,不能用其他方法中处理6・3.下列关于try-catch-finally语句的描述中,错误的是(A)A・try语句后面的程序段将给出处理异常的语句B・catch ()方法跟在try语句后面,它可以是一个或多个C. catch ()方法有一个参数,该参数是某种异常类的对彖D・finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用6・4.下列关于抛出异常的描述中,错误的是(D)A.捕捉到发牛的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理B.在说明要抛出异常的方法吋应加关键字throw<异常列表〉C.v异常列表〉中可以有多个用逗号分隔的异常D.抛岀异常的方法中要使用下述抛出异常语句:throw<异常名〉;其中,v异常名>是异常类的类名6・5.下列关于用户创建自己的异常描述中,错误的是(D)A.创建自己的异常应先创建一个异常类B.为实现抛出异常,须在可能抛出异常的方法中书写throw语句C.捕捉异常的方法是使用try-catch-finally语句格式D.使用异常处理不会使整个系统更加安全和稳定二判断题6・1 .异常是一种特殊的运行错误的对象。
(对)62异常处理可以使整个系统更加安全和稳定。
(对)6・3.异常处理是在编译时进行的。
(错)6-4.Java语言中异常类都是ng.Throwable的子类。
第五章多线程选择题1. 线程调用了sleep()方法后,该线程将进入( C )状态。
A.可运行状态B.运行状态C.阻塞状态D.终止状态2. 关于java线程,下面说法错误的是(D)A.线程是以CPU为主体的行为B. java利用线程使整个系统成为异步C.创建线程的方法有两种:实现Runnable接口和继承Thread类D. 新线程一旦被创建,它将自动开始运行3.在java语言中,临界区可以是一个语句块,或者是一个方法,并用(A )关键字标识。
A.synchronizedB.includeC.importD.Thread4. 线程控制方法中,yield()的作用是(D)A.返回当前线程的引用B.使比其低的优先级线程执行C.强行终止线程D.只让给同优先级线程运行5. java用(A)机制实现了进程之间的异步执行A.监视器B.虚拟机C.多个CPUD.异步调用6. 下面代码运行的结果是什么?(D)public class MyThread implements Runnable {String myString = "Yes ";public void run() {this.myString = "No ";}public static void main(String[] args) {MyThread t = new MyThread();new Thread(t).start();for (int i=0; i < 10; i++)System.out.print(t.myString);}}A. 打印yes yes yes yes yes yes B. 打印no no no no no no no noC. 打印yes no yes no ye no ye no D. 不确定二、填空题1.____多线程____是java程序的并发机制,它能同步共享数据、处理不同的事件。
第六章考试题一、选择题:(每题3分,共20题)1.关于异常的含义,下列描述中最正确的一项是()。
A、程序编译或运行时发生的异常事件B、程序语法错误C、程序自定义的异常事件D、程序编译错误2.自定义异常时,可以通过对下列哪一项进行继承(A )。
A、Exception类及其子类B、Applet类C、AssertionError类D、Error类3.对应try和catch子句的排列方式,下列说法正确的一项是(B )。
A、父类和子类不能同时出现在try语句块中B、子类异常在前,父类异常在后C、父类异常在前,子类异常在后D、只能有子类异常4.运行下面程序时,会产生的异常是( D )。
public class Test06_01 {public static void main(String[] args) {int x = 0;int y = 5/x;int[] z = {1,2,3,4};int p = z[4];}}A、ArrayIndexOutOfBoundsExceptionB、IOExceptionC、NumberFormatExceptionD、ArithmeticException5.运行下面程序时,会产生的异常是(D)。
public class Test06_02 {public static void main(String[] args) {int[] z = {1,2,3,4};int p = z[4];int x = 0;int y = 5/x;}}A、NumberFormatExceptionB、ArithmeticExceptionC、IOExceptionD、ArrayIndexOutOfBoundsException6.下列程序执行的结果是()。
public class Test06_03 {public static void main(String[] args) {try{return;}finally{System.out.println("Finally");}}}A、编译通过,但运行时出现异常B、因为没有catch子句,因此不能通过编译C、程序正常运行,并输出FinallyD、程序正常运行,但不输出任何结果7.下列代码中给出正确的在方法体内抛出异常的是()。
《Java语言程序设计:基础篇》课后复习题答案-第六章Chapter6Single-dimensional Arrays1.See the section"Declaring and Creating Arrays."2.You access an array using its index.3.No memory is allocated when an array is declared.The memory is allocated whencreating the array.x is60The size of numbers is304.Indicate true or false for the following statements:1.Every element in an array has the same type.Answer:True2.The array size is fixed after it is declared.Answer:False3.The array size is fixed after it is created.Answer:True4.The element in the array must be of primitive data type.Answer:False5.Which of the following statements are valid array declarations?int i=new int(30);Answer:Invaliddouble d[]=new double[30];Answer:Validchar[]r=new char(1..30);Answer:Invalidint i[]=(3,4,3,2);Answer:Invalidfloat f[]={2.3, 4.5, 5.6};Answer:Validchar[]c=new char();Answer:Invalid6.The array index type is int and its lowest index is0.a[2]7.(a)double[]list=new double[10];(b)list[list.length–1]=5.5;(c)System.out.println(list[0]+list[1]);(d)double sum=0;for(int i=0;i<list.length;i++)< p="">sum+=list[i];(e)double min=list[0];for(int i=1;i<list.length;i++)< p="">if(min>list[i])min=list[i];(f)System.out.println(list[(int)(Math.random()*list.length));(g)double[]={3.5, 5.5, 4.52, 5.6};8.A runtime exception occurs.9.Line3:the array declaration is wrong.It should be double[].The array needs tobe created before its been used.e.g.new double[10]Line5:The semicolon(;)at the end of the for loop heading should be removed.Line5:r.length()should be r.length.Line6:random should be random()Line6:r(i)should be r[i].10.System.arraycopy(source,0,t,0,source.length);11.The second assignment statement myList=new int[20]creates a new array andassigns its reference to myList.myList new int[10]Array myList new int[10]Arraynew int[20]Array12.False.When an array is passed to a method,the reference value of the array ispassed.No new array is created.Both argument and parameter point to the samearray.13.numbers is 0and numbers[0]is314.(A) ExecutingcreateArray in Line 6Space required for the main methodchar[] chars: refHeap Array of 100 charactersSpace required for the createArray methodchar[] chars: ref(B) After exitingcreateArray in Line 6Space required for themain methodchar[] chars: refHeapArray of 100charactersStack Stack (C) ExecutingdisplayArray in Line 10Space required for the main methodchar[] chars: refHeap Array of 100 charactersSpace required for the displayArray method char[] chars: ref(D) After exitingdisplayArray in Line10Space required for themain methodchar[] chars: refHeapArray of 100charactersStack Stack(E) Executing countLetters in Line 13 Space required for the main methodint[] counts: refchar[] chars: refHeap Array of 100 charactersSpace required for the countLetters method int[] counts: refchar[] chars: ref (F) After exitingcountLetters in Line 13Space required for themain methodint[] counts: refchar[] chars: refHeapArray of 100charactersStack StackArray of 26 integers Array of 26 integers(G) Executing displayCounts in Line 18Space required for the main methodint[] counts: refchar[] chars: refHeap Array of 100 charactersSpace required for the displayCounts methodint[] counts: ref (H) After exitingdisplayCounts in Line 18Space required for themain methodint[] counts: refchar[] chars: refHeapArray of 100charactersStack StackArray of 26 integers Array of 26 integers15.Only one variable-length parameter may be specified ina method and this parameter must be the last parameter.The method return type cannot be a variable-length parameter.16.The last oneprintMax(new int[]{1,2,3});is incorrect,because the array must of the double[] type.17.Omitted18.Omitted19.Omitted20Simply change(currentMaxlist[j])21Simply change list[k]>currentElement on Line9tolist[k]<currentelement< p="">22.You can sort an array of any primitive types except boolean.The sort method is void,so it does not return a new array.23.To apply java.util.Arrays.binarySearch(array,key),the array must be sorted in increasing order.24.Line1:list is{2,4,7,10}Line2:list is{7,7,7,7}Line3:list is{7,8,8,7}Line4:list is{7,8,8,7}</currentelement<></list.length;i++)<></list.length;i++)<>。
java考试题库第六章第六章异常和异常处理一选择题6-1.下列关于异常的描述中,错误的是(B)A.异常是一种经过修正后程序仍可执行的错误B.异常是一种程序在运行中出现的不可恢复执行的错误C.不仅Java语言有异常处理,C++语言也有异常处理D.出现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行6-2.下列关于异常处理的描述中,错误的是(D)A.程序运行时异常由Java虚拟机自动进行处理B.使用try-catch-finally语句捕获异常C.使用throw语句抛出异常D.捕获到的异常只能用当前方法中处理,不能用其他方法中处理6-3.下列关于try-catch-finally语句的描述中,错误的是(A)A.try语句后面的程序段将给出处理异常的语句B.catch()方法跟在try语句后面,它可以是一个或多个C.catch()方法有一个参数,该参数是某种异常类的对象D.finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用6-4.下列关于抛出异常的描述中,错误的是(D)A.捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理B.在说明要抛出异常的方法时应加关键字throw<异常列表>C.<异常列表>中可以有多个用逗号分隔的异常D.抛出异常的方法中要使用下述抛出异常语句:throw<异常名>;其中,<异常名>是异常类的类名6-5.下列关于用户创建自己的异常描述中,错误的是(D)A.创建自己的异常应先创建一个异常类B.为实现抛出异常,须在可能抛出异常的方法中书写throw语句C.捕捉异常的方法是使用try-catch-finally语句格式D.使用异常处理不会使整个系统更加安全和稳定二判断题6-1.异常是一种特殊的运行错误的对象。
(对)6-2.异常处理可以使整个系统更加安全和稳定。
(对)6-3.异常处理是在编译时进行的。
第6章共享与数据保护一、单选题1.已知print()函数是一个类的常成员函数,无返回值,下列正确的原型声明(A)。
A.void print()const;B.const void print();C.void const print();D.void print(const);2.有以下类的说明,请指出错误的地方(A)。
class CSample{const int a=2.5;//Apublic:CSample();//BCSample(int val);//C~CSample();//D};3.下列关于静态成员的描述中,错误的是(C)。
A.静态成员都使用static来说明B.静态成员属于某一个类,而不专属于某一对象C.静态成员只能用类名加作用域运算符引用,不可以通过对象来引用D.静态数据成员的初始化是在类体外进行的4.下列关于常成员的描述中,错误的是(C)。
A.常成员是用关键字const来说明的B.常成员有常数据成员和常成员函数两种C.常数据成员的初始化可以在定义类的类体内用形如const int a=10;的方式进行D.常数据成员的值是不可以改变的5.有以下类的说明,下列哪一种构造函数无法对常数据成员a正确初始化(C)。
class CSample{const int a;public://构造函数代码,见下面的选项};A.CSample():a(24){}B.CSample(int m):a(m){}C.CSample(){a=24;}D.CSample(int m):a(m+24){}6.设类AA内定义了一个int型的静态数据成员a,下列哪种方式对a的初始化正确(D)。
A.在类AA的定义体内用static int a=20;B.在类AA的定义体外单独用语句static int a=20 ;C.在类AA的定义体外单独用语句static int AA∷a=20;D.在类AA的定义体外单独用语句int AA∷a=20;7.关于静态成员函数,下列说法不正确的是(A)。
第6章 类与对象复习题6.1 答: 略6.2答: 略6.3答: 构造方法 ShowErrors(int) 没有定义.原因是默认的构造函数是没有参数的.6.4答: 略6.5答: 变量c 没有初始化,也可以说是没有将对象引用到实例.即c 为null. 6.6 答: 构造函数A()没有定义.原因是类中有了有参的构造方法A(String s),但没有无参构造方法,而系统不会再提供默认的构造函数A()。
系统找不到默认的构造函数.在这种情况下,如果还要用A(),则需要重新定义. 6.7 答:构造函数C(double)没有定义.原因是默认的构造函数是没有参数的. 6.8 答:输出:false;原因是boolean 类型的变量如果没有初始化,则默认初始值为false; 6.9 答:方法x()没有定义;6.10答:略6.11答:略6.12答:输出:1.0;私有变量可以被类里的成员方法访问.6.13答:略6.14答:略6.15答:传递基本类型参数值的变化不能被带回,而引用类型参数的变化可以带回.输出: count is 101 times is 06.16答:After swap1 : circle1= 1.0 circle2=2.0After swap2 : circle1= 2.0 circle2=1.0课后答案网ww w.kh da w .c om6.17答:a[0]= 1 a[1]= 2 (a)a[0]= 2 a[1]= 1 (b)e1 = 2 e2= 1 (c)t1's i = 2 and j= 1 (d)t2's i = 2 and j= 1第四个值得注意,因为 i 为静态的,因此经过二次实例化后,i 就变成2了。
而j 是没有变的,一直为1。
6.18答:System.out .println(f.i);System.out .println(f.s ); f.imethod(); f.smethod ();System.out .println(Foo.s ); Foo.smethod ();但静态成员最好直接用类访问.像 System.out .println(f.s ); f.smethod ();6.19答:i + j is 23k is 2 j is 06.20答:不能在静态方法中调用非静态方法,不能在静态方法中调用非静态变量.反之可以.错误是:不能调用method1(),不能调用c.6.22答:错误没有,但会提出警告:p 不明确,这里应该用this.p;6.23答:第一个输出为:null,因为一个对象的默认值是null,而第二个输出有错,原因是没有将对象引用到实例,即dates[0]为空课后答案网ww w.kh da w .c om。