JAVA各章习题及答案

更新时间:2024-06-19 00:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章

一、选择题

1.下列选项中,不属于Java语言特点的一项是( C )。

(A)分布式 (B)安全性 (C)编译执行 (D)面向对象

【解析】Java程序采用解释执行的方法。在系统编译运行Java程序时,Java编译器将Java程序转化为字节码,在运行时,解释器将编译得到的字节码进行解释执行。 2.在Java语言中,( C )是最基本的元素?

(A)方法 (B)包 (C)对象 (D)接口 【解析】构成Java程序的基本元素类(抽象的对象)。

3.编译一个定义了3个类和10个方法的Java源文件后,会产生( D )个字节码文件?扩展名是( D )?

(A)13个字节码文件,扩展名为.class (B)1个字节码文件,扩展名为.class (C)3个字节码文件,扩展名为.java (D)3个字节码文件,扩展名为.class 【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。

4.在创建Applet应用程序时,需要用户考虑问题是( B )。

(A)窗口如何创建 (B)绘制的图形在窗口中的位置 (C)程序的框架 (D)事件处理

【解析】创建Applet程序时必须继承系统类Applet,而Applet类中已经包含了如何创建窗口以及事件处理等内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。

5.Java语言属于( B )种语言?

(A)面向机器的语言 (B)面向对象的语言 (C)面向过程的语言 (D)面向操作系统的语言 【解析】Java语言是一种纯面向对象的语言。

6.下列关于Application和Applet程序的说法中不正确的一项是( B )。

(A)Application使用解释器java.exe (B)Application不使用独立的解释器 (C)Applet在浏览器中运行 (D)Applet必须继承Java的Applet类

【解析】Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。

7.下列选项中,不属于Java核心包的一项是( A )。

(A)javax.swing (B)java.io (C)java.utile (D)java.lang

【解析】凡是以java开头的包都是Java核心包,以javax开头的包则属于Java扩展包。 8.下列描述中,不正确的是( A )。

(A)不支持多线程 (B)一个Java源文件不允许有多个公共类 (C)Java通过接口支持多重继承 (D)Java程序分为Application和Applet两类 【解析】Java是支持多线程的语言。

9.阅读下列代码,选出该代码段正确的文件名( C )。

1

class A{ void method1(){ System.out.println(\ } }

public class B{ void method2(){ System.out.println(\ } public static void main(String[] args){ System.out.println(\ } }

(A)A.java (B)A.class (C)B.java (D)B.class

【解析】Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。 10.编译下面源程序会得到哪些文件( D )?

class A1{ }

class A2{ }

public class B{ public static void main(String[] args){ } }

(A)只有B.class文件 (B)只有A1.class和A2.class文件 (C)编译不成功 (D)A1.class、A2.class和B.class文件

【解析】由于该程序包含3个类,每个类编译后都会生成1个字节码文件,因此编译后会生成以这3个类名命名的字节码文件。 二、填空题

1.Java程序的编译和执行模式包括2点,是 半编译 和 半解释 。

2.Java语言支持 TCP/IP 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的 对象 。

3.开发Java程序的一般步骤是:源程序编辑、 生成字节码 和 解释执行 。

4.每个Java Application程序可以包括许多方法,但是必须有且只能有一个 main() 方法,统一格式为 public static void main(String[] args) ,它是程序执行的入口。 5.JVM把字节码程序与各种不同的 操作系统 和 硬件 分开,使得Java程序独立于平台。 6.在Java程序中,能在WWW浏览器上运行的是 Applet 程序。 7.Java源程序文件和字节码文件的扩展名分别为 .java 和 .class 。

8.如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上 import java.utitle.* 语句。

2

第2章

一、选择题

1.下列( D )是合法的标识符?

(A)12class (B)void (C)-5 (D)_blank 【解析】根据Java标识符的构成规则确定。 2.下列( B )不是Java中的保留字?

(A)if (B)sizeof (C)private (D)null 【解析】根据Java保留字表进行选择。 3.下列( C )不是合法的标识符?

(A)$million (B)$_million (C)2$_million (D)$2_million 【解析】根据Java标识符的构成规则确定。 4.下列选项中,( B )不属于Java语言的基本数据类型?

(A)整数型 (B)数组 (C)浮点型 (D)字符型 【解析】根据Java语言的基本数据类型包含的类别选取。 5.下列关于基本数据类型的说法中,不正确的一项是( D )。

(A)boolean类型变量的值只能取真或假 (B)float是带符号的32位浮点数 (C)double是带符号的64位浮点数 (D)char是8位Unicode字符

【解析】Java中的字符采用的是16位的Unicode字符。

6.下列关于基本数据类型的取值范围的描述中,正确的一个是( B )。

(A)byte类型的取值范围是-128~128 (B)boolean类型的取值范围是真或假

(C)char类型的取值范围是0~65536 (D)short类型的取值范围是-32767~32767

【解析】根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128~127,其他类型也是如此。 7.下列关于Java语言简单数据类型的说法中,正确的一项是( A )。

(A)以0开头的整数代表8进制整型常量

(B)以0x或0X开头的整数代表8进制整型常量

(C)boolean类型的数据作为类成员变量的时候,相同默认的初始值为true (D)double类型的数据占计算机存储的32位 【解析】根据每种数据类型的特性进行判断。 8.下列Java语句中,不正确的一项是( C )。

(A)$e, a, b = 10; (B)char c, d = ?a‘; (C)float e = 0.0d; (D)double c = 0.0f; 【解析】不能将double类型的常量赋值给float类型的变量。

9.在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是( D )。

(A)byte的默认值是0 (B)boolean的默认值是false (C)char类型的默认值是‘\\0‘ (D)long类型的默认值是0.0L 【解析】long类型的默认值是0L,而不是0.0L。 10.下列语句中不正确的一个是( B )。

3

(A)float f = 1.1f; (B)byte b = 128; (C)double d = 1.1/0.0; (D)char c = (char)1.1f; 【解析】bytel类型变量的取值范围是-128~127。 11.下列表达式1+2+ \的值是( B )。

(A)\ (B)\ (C)\ (D)\

【解析】整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。 12.已知y=2, z=3, n=4,则经过n=n+ -y*z/n运算后n的值为( A )。

(A)3 (B)-1 (C)-12 (D)-3

【解析】根据运算符的优先级,该表达式相当于n=n+ ((-y)*z)/n。 13.已知a=2, b=3,则表达式a%b*4%b的值为( A )。

(A)2 (B)1 (C)-1 (D)-2

【解析】根据运算符的优先级,该表达式相当于((a%b)*4)%b。 14.已知x=2, y=3, z=4,则经过z- = --y – x--运算后,z的值为( D )。

(A)1 (B)2 (C)3 (D)4

【解析】在表达式运算过程中,--y的值变为2,x—的值还是2,等号右侧运算后的值为0,因此z的值没有变化。

15.表达式(12==0) && (1/0 < 1)的值为( B )。

(A)true (B)false (C)0 (D)运行时抛出异常

【解析】由于(12==0)的值为false,因此整个表达式发生短路运算,即(1/0 < 1)就没有参与运算,整个表达式的值为false。

16.设有类型定义short i=32; long j=64; 下面赋值语句中不正确的一个是( B )

(A)j=i; (B)i=j; (C)i=(short)j; (D)j=(long)i;

【解析】long类型的数据不能自动转变为short类型,因此不能将long类型的变量直接赋值给short类型。

17.现有1个char类型的变量c1=66和1个整型变量i=2,当执行c1=c1+(char)i;语句后,c1的值为( D )。

(A)'d' (B)'D' (C)68 (D)语句在编译时出错

【解析】两个字符型的数据相加,得到的是一个整数,而如果把整数再赋值给一个字符型变量则会在编译时出错。

18.下列说法中,正确的一项是( D )。

(A)字符串\的长度为6 (B)False是Java的保留字 (C)123.45L代表单精度浮点型 (D)False是合法的Java标识符 【解析】Java语言对字符的大小写是敏感的,False不是false,因此False是合法的Java标识符。

19.以下的变量定义语句中,合法的是( D )

(A)float _*5 = 123.456F; (B)byte $_b1 = 12345; (C)int _long_ = 123456L; (D)double d = Double.MAX_VALUE; 【解析】(A)中_*5不是合法的标识符,(B)中12345超出byte范围,(C)中不能将long类型的常量赋值给int型的变量。

20.下列关于运算符优先级的说法中,不正确的一个是( C )

(A)运算符按照优先级顺序表进行运算

(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的 (C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的 (D)括号可以改变运算的优先次序

4

【解析】同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。 二、填空题

1.变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:字符型 和 数值型 。 2.Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是byte、 int 、 short 和long。

3. boolean 类型数据不可以做类型转换。

4.在Java语言的基本数据类型中,占存储空间最少的类型是 boolean ,该类型占用的存储空间为 1 位。

5.Java语言中的 保留字 具有特殊意义和作用,不能作为普通标识符使用。

6.在Java语言中,浮点类型数据属于实型数据,可以分为 单精度 和 双精度 两种。 7.char类型的数据可以表示的字符数共为 65536 。

8.定义初始值为10的8次方的常整型变量iLong的语句是 final iLong = 100000000L 。 9.Java语言中的数据类型转换包括 自动转换 和 强制转换 两种。 10.Java中的字符采用的是16位的 Unicode 编码。

11.数据类型中存储空间均为64位的两种数据类型是 long 和 double 。 12.表达式9*4/ -5%5的值为 -2 。(十进制表示) 13.表达式5&2的值为 0 。(十进制表示) 14.表达式42<<4的值为 672 。(十进制表示) 15.表达式11010011>>>3的值为 11010 。(二进制表示) 16.表达式7|3的值为 7 。(十进制表示) 17.表达式10^2的值为 8 。(十进制表示)

18.Java语言中的逻辑与(&&)和逻辑或(||)运算采用 短路 方式进行运算。

19.若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为 82 。

20.假设i=10, j=20, k=30,则表达式 !(i

第3章

一、选择题

1.下列( D )不属于Java语言流程控制结构?

(A)分支语句 (B)跳转语句 (C)循环语句 (D)赋值语句 【解析】Java语言流程控制结构只包括分支、循环和跳转三种语句。

2.假设a是int类型的变量,并初始化为1,则下列( D )是合法的条件语句?

(A)if(a){} (B)if(a<<=3){} (C)if(a=2){} (D)if(true){} 【解析】条件语句中的“条件表达式”只能是boolean类型,不能是其他类型。 3.下列说法中,不正确的一个是( C )。

(A)switch语句的功能可以由if…else if语句来实现

(B)若用于比较的数据类型为double型,则不可以用switch语句来实现 (C)if …else if语句的执行效率总是比switch语句高

(D)case子句中可以有多个语句,并且不需要大括号{}括起来

【解析】语句的执行效率高低要根据具体语句来确定,不能简单地说if …else if语句的执行效率总是比switch语句高。

4.设a、b为long型变量,x、y为float型变量,ch为char类型变量且它们均已被赋值,

5

12.如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须 实现 该接口的

所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以 不实现 该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的 方法体 。 13.包的作用有两个,一是 划分类名空间 ,二是 控制类之间的访问 。

14.封装也称 信息隐藏 ,是指类的设计者只为类的使用者提供类的可以访问的部分(包

括类的数据成员和成员方法),而把类中的其他成员 隐藏 起来,使用户不能访问的机制。

15.Java提供了4种访问权限来实现封装机制,即 private 、 protected 、 默认 和 public 。 16.Java中提供两种多态机制, 重载 与 覆盖 。

17.当一个构造方法需要调用另一个构造方法时,可以使用关键字 this ,同时这个调用语

句应该是整个构造方法的 第一条 可执行语句。

18.如果子类自己没有构造方法,那么父类也一定 没有 (有/没有)带参的构造方法,此

时它将继承父类的 无参构造方法 作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行 父类 的构造方法,然后再执行自己的 构造方法 。 19.对于父类的含参数构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的 第一条 可执行语句。

20.创建一个名为myPachkage的包的语句为 package myPackage; ,该语句应该放在程序第一行 位置。

第6章

一、选择题

1.给出下面程序代码:

byte[] a1, a2[]; byte a3[][]; byte[][] a4;

下列数组操作语句中哪一个是不正确的?( A ) A.a2 = a1 B.a2 = a3 C.a2 = a4 D.a3 = a4 【解析】只有维数相同的数组才能相互赋值。 2.关于数组,下列说法中不正确的是( C )。

A.数组是最简单的复合数据类型,是一系列数据的集合 B.数组元素可以是基本数据类型、对象或其他数组 C.定义数组时必须分配内存

D.一个数组中所有元素都必须具有相同的数据类型

【解析】数组元素可以是基本数据类型、对象或其他数组。 3.设有下列数组定义语句:

int a[] = {1, 2, 3};

则对此语句的叙述错误的是( C )。 A.定义了一个名为a的一维数组 B.a数组有3个元素 C.a数组元素的下标为1~3 D.数组中每个元素的类型都是整数 【解析】数组元素的下标是从0开始的。

4.执行语句:int[] x = new int[20];后,下面哪个说法是正确的?( C ) A.x[19]为空 B.x[19]未定义 C.x[19]为0 D.x[0]为空

11

【解析】此语句定义了x数组后,x[0]~x[19]的值全部为0。 5.下面代码运行后的输出结果为( A )。

public class X6_1_5 {

public static void main(String[] args) { AB aa = new AB(); AB bb; bb = aa; System.out.println(bb.equals(aa)); } }

class AB{ int x = 100; }

A.true B.false C.编译错误 D.100

【解析】同一个类的两个对象可以相互赋值,赋值后两个对象具有相同的存储空间,因此是相同的。

6.已知有定义:String s=\,下面哪个表达式正确?( A ) A.s += \ B.char c = s[1]; C.int len = s.length; D.String s = s.toLowerCase();

【解析】字符串对象可以执行“+=”运算,但不能用s[1]这种方式取其中的字符,也不能用length求它的长度,可以用length()求其长度,因此B、C不正确,不能再次定义s字符串,因此D不正确。 二、填空题

1. Object类 是所有类的直接或间接父类,它在 java.lang 包中。

2.System类是一个功能强大、非常有用的特殊的类,它提供了 标准输入/输出 、 运行时 系统信息等重要工具。这个类不能 实例化 ,即不能创建System类的对象,所以它所有的属性和方法都是 static 类型,引用时以类名System为前缀即可。

3.Applet由浏览器自动调用的主要方法 init , start , stop 和 destroy 分别对应了Applet从初始化、启动、暂停到消亡的生命周期的各个阶段 。

4.数组是一种 复合 数据类型,在Java中,数组是作为 对象 来处理的。数组是有限元素的有序集合,数组中的元素具有相同的 数据类型 ,并可用统一的 数组名 和 下标 来唯一确定其元素。

5.在数组定义语句中,如果[]在数据类型和变量名之间时,[]之后定义的所有变量都是

数组 类型,当[]在变量名之后时,只有[]之前的变量是 数组 类型,之后没有[]的则不是数组类型。

6.数组初始化包括 静态 初始化和 动态 初始化两种方式。

7.利用 System 类中的 arraycopy() 方法可以实现数组元素的复制;利用 Arrays 类中的 sort() 和 binarySearch() 方法可以实现对数组元素的排序、查找等操作。

8.Java语言提供了两种具有不同操作方式的字符串类: String 类和 StringBuffer 类。它们都是 java.lang.Object 的子类。 三、写出下列程序的运行结果 1.public class X6_3_1 {

public static void main(String[] args) { int a[]={12,39,26,41,55,63,72,40,83,95}; int i1=0,i2=0; for(int i=0;i

12

【运行结果】 6 4

2.public class X6_3_2 {

public static void main(String[] args) { int a[]={36,25,48,14,55,40,32,66}; int b1,b2; b1=b2=a[0]; for(int i=1;ib1 ){ if ( b1 >b2 ) b2=b1; b1=a[i]; } System.out.println(b1+\ } }

【运行结果】 66 55

3.public class X6_3_3 {

public static void main(String[] args) { int a[]={36,25,48,14,55,40,32,66 }; int b1,b2; b1=b2=a[0]; for (int i=1;i

【运行结果】 14 25

4.public class X6_3_4 {

public static void main(String[] args) { String str = \ char[] a =str.toCharArray(); int i1 =0, i2=0, i; for(i=0;i

【运行结果】 4 3

5.public class X6_3_5 {

public static void main(String[] args) { String str =\ char[] a = str.toCharArray(); int b[] = new int[5],i; for(i=0;i

case 'c': b[2] ++; break;

13

case 'd': b[3] ++; break; default : b[4] ++; } } for(i =0; i<5; i++) System.out.print(b[i]+\ System.out.println(); } }

【运行结果】

4 3 2 2 3

6.public class X6_3_6 {

public static void main(String[] args) { int a[] = {76,83,54,62,40,75,90,92,77,84}; int b[] = {60,70,90,101}; int c[]=new int[4],i;

for (i=0; i

while (a[i] >= b[j] ) j ++; c[j] ++; }

for (i=0; i<4; i++) System.out.print(c[i]+\ System.out.println(); } }

【运行结果】

2 1 5 2

7.public class X6_3_7 {

public static void main(String[] args) { int a[][] = {{1,2,7,8},{5,6,11,12},{9,10,3,4}}; int m = a[0][0]; int ii = 0, jj = 0;

for (int i=0;im ){ m =a[i][j]; ii =i; jj =j; }

System.out.println(ii+\ } }

【运行结果】

1 3 12

8.public class X6_3_8 {

public static void main(String[] args) { String[] a = {\,\,\,\,\}; String s1,s2; s1 = s2 = a[0];

for( int i = 1; i0) s1=a[i]; if (a[i].compareTo(s2)<0) s2=a[i]; }

System.out.println(s1+\ } }

14

【运行结果】 worker cadre

第7章

一、选择题

1.关于异常的含义,下列描述中最正确的一个是( D )。 A.程序编译错误 B.程序语法错误 C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件 【解析】异常就是程序编译或运行时发生的异常事件。

2.自定义异常时,可以通过对下列哪一项进行继承?( C ) A.Error类 B.Applet类 C.Exception类及其子类 D.AssertionError类 【解析】自定义异常类时,该类必须继承Exception类及其子类。

3.对应try和catch子句的排列方式,下列哪一项是正确的?( A ) A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常 D.父类和子类不能同时出现在try语句块中 【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。

4.运行下面程序时,会产生什么异常?( A )

public class X7_1_4 {

public static void main(String[] args) { int x = 0; int y = 5/x; int[] z = {1,2,3,4}; int p = z[4]; } }

A.ArithmeticException B.NumberFormatException C.ArrayIndexOutOfBoundsException D.IOException

【解析】当程序执行到“int y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。

5.运行下面程序时,会产生什么异常?( C )

public class X7_1_5 {

public static void main(String[] args) { int[] z = {1,2,3,4}; int p = z[4]; int x = 0; int y = 5/x; } }

A.ArithmeticException B.NumberFormatException C.ArrayIndexOutOfBoundsException D.IOException

【解析】当程序执行到“int p = z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。 6.下列程序执行的结果是( B )。

public class X7_1_6 {

public static void main(String[] args) { try{

15

}

}

return; }

finally{ System.out.println(\}

A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译 【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。

7.下列代码中给出正确的在方法体内抛出异常的是( B )。 A.new throw Exception(\ B.throw new Exception(\C.throws IOException(); D.throws IOException; 【解析】在方法体内抛出异常时只能使用throw,而不能使用throws,另外,“new Exception(\\”是创建一个异常,因此B是正确的。

8.下列描述了Java语言通过面相对象的方法进行异常处理的好处,请选出不在这些好处范围之内的一项( C )

A.把各种不同的异常事件进行分类,体现了良好的继承性 B.把错误处理代码从常规代码中分离出来 C.可以利用异常处理机制代替传统的控制流程

D.这种机制对具有动态运行特性的复杂程序提供了强有力的支持 【解析】异常处理机制不能代替传统的流程控制。 二、填空题

1.异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,出现在编译阶段的异常,称之为 编译时异常 ,出现在运行阶段的异常,称之为 运行时异常 。

2.根据异常的来源,可以把异常分为两种类型: 系统定义的运行时异常 和 用户自定义异常 。

3.所有的Java异常类都是系统类库中的 Exception 类的子类。

4.抛出异常分为 由系统自动抛出异常 、 通过throw抛出异常 以及 通过throws抛出异常 三种情况。

5.Java语言为我们提供了 try?catch 语句和try?catch?finally 语句捕捉并处理异常。 6.一个try块后面可能会跟着若干个 catch 块,每个 catch 块都有一个异常类名作为参数。 7.如果try语句块产生的异常对象被第一个catch块所接收,则程序的流程将 转向第一个catch块 ,catch语句块执行完毕后就 退出当前方法 ,try块中尚未执行的语句和其他的catch块将被 忽略 ;如果try语句块产生的异常对象与第一个catch块不匹配,系统将自动转到 第二个catch块 进行匹配。

8.由于异常对象与catch块的匹配是按照catch块的 先后 顺序进行的,所以在处理多异常时应注意认真设计各catch块的排列顺序。

9.throws语句抛出的异常实际上是由throws语句修饰的方法内部的 throw 语句抛出的,使用throws的主要目的是为了 通知所有预调用此方法的方法 。

16

第8章

一、选择题

1.下列数据流中,属于输入流的一项是( B )。

A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流 【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。 2.Java语言提供处理不同类型流的类所在的包是( D )。

A.java.sql B.java.util C.java.net D.java.io 【解析】java.io 包是Java语言提供处理不同类型流的类所在的包。 3.不属于java.io包中的接口的是( C )。

A.DataInput B.DataOutput C.DataInputStream D.ObjectInput 【解析】DataInputStream是java.io包中的一个类,其他三个则是java.io包中的接口。 4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入―//x‖处,完成要求的功能( B )。

import java.io.*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x System.out.println(ch); } catch(IOException e){ e.printStackTrace(); } } }

A.ch = System.in.read(); B.ch = (char)System.in.read(); C.ch = (char)System.in.readln(); D.ch = (int)System.in.read();

【解析】System.in.read()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,System.in对象中没有readln()方法。

5.下列程序实现了在当前包dir815下新建一个目录subDir815,选择正确的一项填入程序的横线处,使程序符合要求( D )。

package dir815; import java.io.*;

public class X8_1_5 { public static void main(String[] args){ char ch; try{ File path = ; if(path.mkdir()) System.out.println(\ } catch(Exception e){

17

} }

}

e.printStackTrace();

A.new File(\ B.new File(\ C.new File(\ D.new File(\【解析】在程序中,目录之间的连接符是“\\\\”或“/”,因此首先排除B和C;而默认情况下,创建相对目录是在当前目录下进行,而dir815也在当前目录下,因此要在dir815下创建新的目录,就必须使用D的形式。

6.下列流中哪一个使用了缓冲区技术( A )?

A.BufferedOutputStream B.FileInputStream C.DataOutputStream D.FileReader 【解析】只有BufferedOutputStream使用了缓冲区技术。

7.能读入字节数据进行Java基本数据类型判断过虑的类是( C )。

A.BufferedInputStream B.FileInputStream C.DataInputStream D.FileReader

【解析】DataInputStream类在读入字节数据时,进行Java基本数据类型判断过虑。 8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )?

A.BufferedInputStream B.RandomAccessFile C.FileWriter D.FileReader

【解析】只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。 9.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( C )?

A.PrintStream B.FileInputStream C.InputStreamReader D.FileReader

【解析】InputStreamReader类的对象可以作为BufferedReader类构造方法的参数。

10.若文件是RandomAccessFile的实例f,并且其基本文件长度大于0,则下面的语句实现的

功能是( B )。

f.seek(f.length()-1);

A.将文件指针指向文件的第一个字符后面 B.将文件指针指向文件的最后一个字符前面 C.将文件指针指向文件的最后一个字符后面 D.会导致seek()方法抛出一个IOException异常

【解析】通过调用f对象的length()方法,可以将文件指针指向文件的末尾,因此f.length()-1即指向文件的最后一个字符前面。

11.下列关于流类和File类的说法中错误的一项是( B )。

A.File类可以重命名文件 B.File类可以修改文件内容 C.流类可以修改文件内容 D.流类不可以新建目录 【解析】只有流类可以修改文件内容,而File类则不能。

12.若要删除一个文件,应该使用下列哪个类的实例( B )?

A.RandomAccessFile B.File C.FileOutputStream D.FileReader

【解析】要删除文件以及查看文件属性等,应使用File类对象来实现。 13.下列哪一个是Java系统的标准输入流对象( )?

A.System.out B.System.in C.System.exit D.System.err

【解析】System.in是Java系统的标准输入流对象,而System.out和System.err则是Java系统的

18

标准输出流和标准错误对象,System.exit则是System类的退出方法。 14.Java系统标准输出对象System.out使用的输出流是( A )。

A.PrintStream B.PrintWriter C.DataOutputStream D.FileReader 【解析】System.out属性是PrintStream类型的对象。 二、填空题

1.Java的输入输出流包括 字节流 、 字符流 、 文件流 、 对象流 以及多线程之间通信的 管道流 。

2.凡是从外部设备流向中央处理器的数据流,称之为 输入 流;反之,称之为 输出 流。 3.java.io包中的接口中,处理字节流的有 DataInput 接口和 DataOutput 接口。

4.所有的字节输入流都从 InputStream 类继承,所有的字节输出流都从 OutputSteam 类继承。

5.与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读写

Unicode字符的字符流 Reader 类和 Writer 类。

6.对一般的计算机系统,标准输入通常是 键盘 ,标准输出通常是 显示器 。

7.Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是 System.in 和 System.out 。

8.System类的所有属性和方法都是 Static类型 的,即调用时需要以类名System为前缀。 9.Java的标准输入System.in是 InputStream 类的对象,当程序中需要从键盘读入数据的时

候,只需调用System.in的 read 方法即可。

10.执行System.in.read()方法将从键盘缓冲区读入一个 字节 的数据,然而返回的却是16比

特的 整形量 ,需要注意的是只有这个 整形量 的低位字节是真正输入的数据,其高位字节 全部为0 。

11.System.in只能从键盘读取 二进制 的数据,而不能把这些比特信息转换为整数、字符、浮点数或字符串等复杂数据类型的量。

12.Java的标准输出System.out是 PrintStream 类的对象。 PrintStream 类是过滤输出流类FilterOutputStream的一个子类,其中定义了向屏幕输送不同类型数据的方法 print() 和 println() 。

13.在Java中,标准错误设备用 System.err 表示。它属于PrintStream 类对象。

14.在计算机系统中,需要长期保留的数据是以 文件 的形式存放在磁盘、磁带等外存储设

备中的。

15. 目录 是管理文件的特殊机制,同类文件保存在同一 目录 下可以简化文件的管理,

提高工作效率。

16.Java语言的java.io包中的 File 类是专门用来管理磁盘文件和目录的。调用 File 类的

方法则可以完成对文件或目录的常用管理操作,如创建文件或目录、删除文件或目录、查看文件的有关信息等。

17.File类也虽然在java.io包中,但它不是InputStream或者OutputStream的子类,因为它不负

责 数据的输入输出 ,而专门用来管理 文件和目录 。

18.如果希望从磁盘文件读取数据,或者将数据写入文件,还需要使用文件输入输出流类

FileInputStream 和 FileOutputStream 。 19.Java系统提供的FileInputStream类是用于读取文件中的 字节 数据的 字节 文件输入流

类;FileOutputStream类是用于向文件写入 字节 数据的 字节 文件输出流。

20.利用 DataInputStream 类和 DataOutputStream 类提供的成员方法可以方便地从文件中读写不同类型的数据。

19

21.Java中的 RandomAccessFile 类提供了随机访问文件的功能,它继承了 Object 类,用

DataInput 和 DataOutput 接口来实现。

第9章

一、选择题

1.下列说法中,正确的一项是( A )。

A.单处理机的计算机上,2个线程实际上不能并发执行 B.单处理机的计算机上,2个线程实际上能够并发执行 C.一个线程可以包含多个进程 D.一个进程只能包含一个线程 【解析】单处理机的计算机上通过一个极短的固定时间段或者在线程等待时,切换到另一个线程,这种调度过程时间极短,看上去像是并发执行。 2.下列说法中,错误的一项是( A )。 A.线程就是程序 B.线程是一个程序的单个执行流 C.多线程是指一个程序的多个执行流 D.多线程用于实现并发

【解析】线程是一个程序的单个执行流,而不是程序本身。而多线程作为实现并发的一个重要手段,是一个程序的多个执行流。

3.下列关于Thread类的线程控制方法的说法中错误的一项是( C )。 A.线程可以通过调用sleep()方法使比当前线程优先级低的线程运行 B.线程可以通过调用yield()方法使和当前线程优先级一样的线程运行 C.线程的sleep()方法调用结束后,该线程进入运行状态

D.若没有相同优先级的线程处于可运行状态,线程调用yield()方法时,当前线程将继

续执行

【解析】线程的sleep()方法调用结束后,该线程进入就绪状态,而不是运行状态。 4.方法resume()负责恢复下列哪一个线程的执行( D )? A.通过调用stop()方法而停止的线程 B.通过调用sleep()方法而停止的线程 C.通过调用wait()方法而停止的线程 D.通过调用suspend()方法而停止的线程 【解析】通过调用suspend()方法而停止的线程需要调用resume()恢复。

5.下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的( C )? A.serialize B.transient C.synchronized D.static 【解析】synchronized用来对对象加锁,从而使得对对象的访问是排他的。 6.下列说法中,错误的一项是( A )。 A.线程一旦创建,则立即自动执行

B.线程创建后需要调用start()方法,将线程置于可运行状态 C.调用线程的start()方法后,线程也不一定立即执行 D.线程处于可运行状态,意味着它可以被调度

【解析】线程创建后需要调用start()方法,将线程置于可运行状态。 7.下列说法中,错误的一项是( A )。 A.Thread类中没有定义run()方法 B.可以通过继承Thread类来创建线程 C.Runnable接口中定义了run()方法 D.可以通过实现Runnable接口创建线程 【解析】Thread类和Runnable接口中都定义了run()方法,而start()方法只有Thread类中进行了定义,而Runnable接口中没有定义。 8.Thread类定义在下列哪个包中( B )?

20

本文来源:https://www.bwwdw.com/article/cbq3.html

Top