Java期末复习 - 各章习题小题

更新时间:2024-01-16 23:06:01 阅读量: 教育文库 文档下载

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

第1章 Java入门

一、选择题

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类中已经包含了如何创建窗口以及事件处理等

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

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

内容,这类程序的框架也都是固定的,而绘制图形在窗口

中的位置则需要由用户确定。

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是支持多线程的语言。 【解析】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

11.编译Java程序时,用于指定生成class文件位置的选项是( A )。

A.-d B.-g C.-verbose D.-nowarn 12.下列标识符(名字)命名原则中,正确的是( C )。 A.类名的首字母小写 B.接口名的首字母小写

C.常量全部大写 D.变量名和方法名的首字母大写 13.下面哪种注释方法能够支持javadoc命令?( C ) A.// B./*...*/ C./**...*/ D./**...**/

三、判断题

14.下面哪些选项是正确的main方法说明?( D ) A.void main()

B.private static void main(String args[]) C.public main(String args[])

D.public static void main(String args[])

1.Java语言具有较好的安全性和可移植性及与平台无关等特性。( √ ) 2.Java语言的源程序不是编译型的,而是编译解释型的。( √ )

3.Java Application程序中,必有一个主方法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。( × )

2

第2章 标识符与简单数据类型

一、选择题

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

(A)12class (B)void (C)-5 (D)_blank 2.下列( B )不是Java中的保留字?

(A)if (B)sizeof (C)private (D)null 3.下列( C )不是合法的标识符?

(A)$million (B)$_million (C)2$_million (D)$2_million 4.下列选项中,( B )不属于Java语言的基本数据类型?

(A)整数型 (B)数组(C)浮点型(D)字符型 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

10.下列语句中不正确的一个是( B )。

(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)-1 (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

3

不是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型的变量。 ( C )

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

(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的

(C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的

(D)括号可以改变运算的优先次序 【解析】同一优先级的运算符在表达式中都是按照从

左到右的顺序进行运算的。

20.下列关于运算符优先级的说法中,不正确的一个是三、判断题

1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。( × )

2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。( √ ) 3.所有的变量在使用前都必须进行初始化。( × )

4.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。( √ ) 5.String str=\char chr=str.charAt(9); ( × )

6.char[] chrArray={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'}; char chr=chrArray[6]; 7.int i,j; boolean booleanValue=(i==j); ( × )

8.int intArray[]={0,2,4,6,8}; int length=int Array.length();( × ) 9.String str=\( × ) 10.short shortValue=220; byte byteValue=shortValue; ( × ) 11.int[] intArray[60]; ( × )

12.char[] str=\( × )

13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。( √ )

14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。( √ ) √ ) 4

第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类型变量且它们均已被赋值,则下列语句中正确的是( B )。

(A)switch(x+y) {} (B)switch(ch+1) {} (C)switch ch {} (D)switch(a+b); {} 【解析】switch后面的表达式必须放在括号()中,且表达式的类型只能是byte、short、int和char类型,不能是其他类型。

5.下列循环体执行的次数是( C )。

int y=2, x=4;

while(--x != x/y){ }

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

【解析】第1次执行while时,--x的值为3,3/2=1,满足等号两端值不等的条件,执行一次循环体;第2次执行while时,--x的值为2,2/2=1,条件满足,又执行一次循环体;第3次执行while时,--x的值为1,1/2=0,条件满足,再次执行一次循环体;第4次执行while时,--x的值为0,0/2=0,条件不满足满足,结束循环。因此在这个循环语句执行的过程中,循环体共执行了3次。 6.下列循环体执行的次数是( B )。

int x=10, y=30;

do{ y -= x; x++; }while(x++

7.已知如下代码:

switch(m){

case0:System.out.println(\case1:System.out.println(\case2:System.out.println(\

case3:System.out.println(\default:System.out.println(\} 当m的值为( D )时,输出“Condition 3”

(A)2 (B)0、1 (C)0、1、2(D)0、1、2、3

【解析】当m的值为0、1、2、3时,都能输出“Condition 3”,因为case 0、case 1、case 2后面的语句都没有break,因此可以继续向后执行。

5

第4章 类与对象

一、选择题

1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( D )

(A)protected (B)public (C)default (D)private

2.在Java语言中,哪一个包中的类是自动导入的?( A )

A)java.lang B)java.awt C)java.io D)java.applet

【解析】只有java.lang包中的类能够被自动导入。

3.给出下面的程序代码:

public class X4_1_3 { private float a; public static void m ( ){ }

}

如何使成员变量a被方法m( )访问( C ) (A)将private float a改为protected float a (B)将private float a改为public float a (C)将private float a改为static float a (D)将private float a改为float a 【解析】static类型的方法只能访问static类型的数据成员。

4.有一个类B,下面为其构造方法的声明,正确的是( B )。

(A)void B(int x) {} (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {} 5.下面关于类的说法,不正确的是( C )。 (A)类是同种对象的集合和抽象 (B)类属于Java语言中的复合数据类型 (C)类就是对象 (D)对象是Java语言中的基本结构单位

【解析】类是对象的抽象,对象是类的实例 6.下面关于方法的说法,不正确的是( C )。 三、判断题

1.类是一种类型,也是对象的模板。( √ )

2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × )

4.创建对象时系统将调用适当的构造方法给对象初始化。( √ )

5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。( √ )

6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。( √ ) 7.对象可作方法参数,对象数组不能作方法参数。( × ) 8.class是定义类的惟一关键字。( √ )

9.Java语言会自动回收内存中的垃圾。( √ )

(A)Java中的构造方法名必须和类名相同

(B)方法体是对方法的实现,包括变量声明和合法语句 (C)如果一个类定义了构造方法,也可以用该类的默认构造方法

(D)类的私有方法不能被其他类直接访问

【解析】类中一旦用户定义了构造方法,该类默认的构造方法就不存在了,除非用户再自定义该类的默认构造方法。

7.关于内部类,下列说法不正确的是( A )。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰

(C)内部类可以作为其他类的成员,而且可访问它所在的类的成员

(D)除static内部类外,不能在类内声明static成员 8.定义外部类时不能用到的关键字是( C )。

(A)final (B)public (C)protected (D)abstract

【解析】定义外部类不能使用protected修饰符。

9.为AB类定义一个无返回值的方法f,使得使用类名就可以访问该方法,该方法头的形式为( D ) (A)abstract void f() (B)public void f() (C)final void f() (D)static void f() 【解析】只有static类型的方法才可以直接使用类名来引用。

10.定义一个公有double型常量PI,哪一条语句最好?( B )

(A)public final double PI; (B)public final static double PI=3.14; (C)public final static double PI; (D)public static double PI=3.14; 【解析】用public final static来定义常量,既可以节省存储空间,又可以保证数值不会被改变。

6

第5章 子类与继承

一、选择题

1.已知有下面类的说明:

public class X5_1_1 extends x{ private float f =10.6f; int i=16;

static int si=10;

public static void main(String[] args) { X5_1_1 x=new X5_1_1(); } }

在main()方法中,下面哪条语句的用法是正确的?( A )

A.x.f B.this.si C.X5_1_1.i D.X5_1_1.f

【解析】由于x是在main方法内部定义的对象,因此它可以引用类的非static类型的属性,因此选A,而this和super不能在main方法中使用,使用类名只能引用本类的静态属性,因此B、C、D不对。

3.下面关于接口的说法中不正确的是(C )。 A.接口中所有的方法都是抽象的

B.接口中所有的方法都是public访问权限

C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法

【解析】子接口继承父接口所用的关键字也是extends,只有类实现接口时才使用implements。 4.区分类中重载方法的依据是( A )。 A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同 【解析】形参表的类型和顺序不同时区分重载方法的唯一标志。

5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?( B ) A.能,能 B.能,不能 C.不能,能 D.不能,不能

【解析】子类对象可以直接赋值给父类对象,而父类对象不能直接赋值给子类对象。

6.Java语言类间的继承关系是( A )。 A.单继承 B.多重继承 C.不能继承 D.不一定 【解析】Java语言类间的继承关系是单继承,但一个类可以实现多个接口。

7.Java语言接口间的继承关系是( B )。

A.单继承 B.多重继承 C.不能继承 D.不一定 【7.解析】Java语言接口间的继承关系允许多重继承。 8.一个类实现接口的情况是( A )。

2.下列程序的运行结果是( C )。

public class X5_1_2 extends x{

int ab(){

static int aa=10; aa++;

System.out.println(aa); }

public static void main(String[] args) { X5_1_2 x=new X5_1_2(); x.ab(); } }

A.10 B.11

C.编译错误 D.运行成功,但不输出

【解析】方法体内的局部变量不能使用static修饰符。

A.一次可以实现多个接口 B.一次只能实现一个接口 C.不能实现接口 D.不一定

【解析】Java语言允许一个类一次实现多个接口。 9.定义外部类的类头时,不可用的关键字是( C )。 A.public B.final C.protected D.abstract

【解析】定义外部类时不能使用protected关键字。

10.如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量?( B )

A.不能引用,必须改名,使它们的名称不相同 B.在成员变量前加this,使用this访问该成员变量 C.在成员变量前加super,使用super访问该成员变量 D.不影响,系统可以自己区分

【解析】this可以用来引用本类对象。 11.下面说法不正确的是( B )。 A.抽象类既可以做父类,也可以做子类 B.abstract和final能同时修饰一个类

C.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口

D.声明为final类型的方法不能在其子类中重新定义 【解析】abstract和final不能同时修饰一个类,因为abstract类需要子类,而final类不能有子类。

7

三、判断题

1.Java语言中,构造方法是不可以继承的。( √ )

2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × ) 3.抽象方法是一种只有说明而无具体实现的方法。( √ ) 4.Java语言中,所创建的子类都应有一个父类。( √ )

5.调用this 或super构造方法的语句必须放在第一条语句。( √ ) 6.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 7.实现接口的类不能是抽象类。( √ )

8.使用构造方法只能给实例成员变量赋初值。( √ )

9.Java 语言不允许同时继承一个类并实现一个接口。( × )

第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]为空 【解析】此语句定义了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不正确。

8

第7章 内部类与异常类

一、选择题

1.关于异常的含义,下列描述中最正确的一个是( D )。 A.程序编译错误 B.程序语法错误

C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件

【解析】异常就是程序编译或运行时发生的异常事件。 2.自定义异常时,可以通过对下列哪一项进行继承?( C )

A.Error类 B.Applet类

C.Exception类及其子类 D.AssertionError类 【解析】自定义异常类时,该类必须继承Exception类及

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]; } }

其子类。

3.对应try和catch子句的排列方式,下列哪一项是正确的?( A )

A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常

D.父类和子类不能同时出现在try语句块中

【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。

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 y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。 6.下列程序执行的结果是( B )。

A.ArithmeticException B.NumberFormatException

C.ArrayIndexOutOfBoundsException D.IOException 【解析】当程序执行到“int p = z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。

public class X7_1_6 { public static void main(String[] args) { try{ return; } finally{ System.out.println(\ } } }

A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译

【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。

7.下列代码中给出正确的在方法体内抛出异常的是8.下列描述了Java语言通过面相对象的方法进行异常处( B )。 理的好处,请选出不在这些好处范围之内的一项(C) A.new throw Exception(\.throw new Exception(\A.把各种不同的异常事件进行分类,体现了良好的继承C.throws IOException(); D.throws IOException; 性 B.把错误处理代码从常规代码中分离出来 【解析】在方法体内抛出异常时只能使用throw,而不能C.可以利用异常处理机制代替传统的控制流程 使用throws,另外,“new Exception(\\”是创建一个异D.这种机制对具有动态运行特性的复杂程序提供了强有常,因此B是正确的。 力的支持

9

三、判断题(第7章)

1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ ) 2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.try-catch语句不可以嵌套使用。( × )

4.Error类所定义的异常是无法捕获的。( √ )

5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。( √ ) 6.用户自定义异常类是通过继承Throwable类来创建的。( × )

7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ )

三、判断题(第9章)

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()方法而实现的。( √ )

10

第8章 输入流与输出流

一、选择题

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

A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流

【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。

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()方法。

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

A.BufferedOutputStream B.FileInputStream

C.DataOutputStream D.FileReader

【解析】只有BufferedOutputStream使用了缓冲区技术。 7.能读入字节数据进行Java基本数据类型判断过虑的类是( C )。

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

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包中的接口。

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){ e.printStackTrace(); } } }

A.new File(\ B.new

File(\

C.new File(\ D.new File(\

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

8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )?

A.BufferedInputStream B.RandomAccessFile

C.FileWriter D.FileReader

【解析】只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。

11

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系统的标准输出流和标准错误对象,System.exit则是System类的退出方法。

14.Java系统标准输出对象System.out使用的输出流是( A )。

A.PrintStream B.PrintWriter

C.DataOutputStream D.FileReader

【解析】System.out属性是PrintStream类型的对象。

1.文件缓冲流的作用是提高文件的读/写效率。( √ ) 2.通过File类可对文件属性进行修改。( √ ) 3.IOException必须被捕获或抛出。( √ )

4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。( √ )

5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。( √ ) 6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。( √ )

12

第9章 Java多线程机制

一、选择题

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 )? A.java.io B.java.lang C.java.util D.java.awt

【解析】Thread类定义在java.lang包中,因此使用时可以不用显式加载。

9.Thread类的常量NORM_PRIORITY代表的优先级是( C )。

A.最低优先级 B.最高优先级 C.普通优先级 D.不是优先级 【解析】NORM_PRIORITY代表的优先级是普通优先级。 10.下列关于线程优先级的说法中,错误的一项是( D )。

A.MIN_PRIORITY代表最低优先级 B.MAX_PRIORITY代表最高优先级

C.NORM_PRIORITY代表普通优先级 D.代表优先级的常数值越大优先级越低 【解析】代表优先级的常数值越大优先级越高

13

第10章 组件及事件处理

一、选择题

1.下列说法中错误的一项是( B )。

A.构件是一个可视化的能与用户在屏幕上交互的对象

B.构件能够独立显示出来

C.构件必须放在某个容器中才能正确显示 D.一个按钮可以是一个构件

【解析】构件不能独立显示,它必须放在某个容器中才能正确显示。

2.进行Java基本GUI设计需要用到的包是( C )。A.java.io B.java.sql C.java.awt D.java.rmi 【解析】进行Java基本GUI设计需要用到的包是java.awt和javax.swing

3.Container是下列哪一个类的子类( D )?

A.Graphics B.Window C.Applet D.Component 【解析】Container类是由Component类派生的。 4.java.awt.Frame的父类是( B )。 A.java.util.Window B.java.awt Window C.java.awt Panel D.java.awt.ScrollPane 【解析】java.awt.Frame的父类java.awt Window。 5.下列哪个方法可以将MenuBar加入Frame中( D )?

A.setMenu() B.addMenuBar() C.add() D.setMenuBar()

【解析】可以将MenuBar加入Frame中的方法是setMenuBar()。

6.下列叙述中,错误的一项是( D )。

A.采用GridLayout布局,容器中的每个构件平均分配容器空间

B.采用GridLayout布局,容器中的每个构件形成一个网络状的布局

C.采用GridLayout布局,容器中的构件按照从左到右、从上到下的顺序排列

D.采用GridLayout布局,容器大小改变时,每个构件不再平均分配容器空间

【解析】采用GridLayout布局,容器大小改变时,每个构件平均分配容器空间。

7.当单击鼠标或拖动鼠标时,触发的事件是( D )。

A.KeyEvent B.ActionEvent C.ItemEvent D.MouseEvent

【解析】对鼠标操作,触发的事件是MouseEvent事件。 8.下列哪一项不属于Swing的顶层组件( C )? A.JApplet B.JDialog C.JTree D.Jframe 【解析】JTree 只有在容器中才能显示,它不属于swing的顶层组件。

9.下列说法中错误的一项是( D )。

A.在实际编程中,一般使用的是Component类的子类 B.在实际编程中,一般使用的是Container类的子类 C.Container类是Component类的子类

D.容器中可以放置构件,但是不能够放置容器

【解析】容器中既可以放置构件,也可以放置容器。 10.下列哪一项不属于AWT布局管理器( D )?

A.GridLayout B.CardLayout C.BorderLayout D.BoxLayout 【解析】BoxLayout属于swing布局管理器,不属于AWT布局管理器。

11.下列说法中错误的一项是( A )。

A.MouseAdapter是鼠标运动适配器 B.WindowAdapter是窗口适配器

C.ContainerAdapter是容器适配器 D.KeyAdapter是键盘适配器

【解析】MouseAdapter是鼠标适配器,而MouseMotionAdapte才是鼠标运动适配器。

12.布局管理器可以管理构件的哪个属性( A )?

A.大小 B.颜色 C.名称 D.字体

【解析】布局管理器可以管理构件的位置和大小,而不能管理构件的其他属性。

13.编写AWT图形用户界面的时候,一定要import的语句是( B )。

A.import java.awt; B.import java.awt.*; C.import javax.awt D.import javax.swing.*; 【解析】“import java.awt.*;”语句的含义是加载awt包中的所有类,而其他都不是。

14.在类中若要处理ActionEvent事件,则该类需要实现的接口是( B )。

A.Runnable B.ActionListener C.Serializable D.Event

【解析】处理ActionEvent事件的类需要实现的接口是ActionListener,它其中包含了actionPerformed()方法。 15.下列不属于java.awt包中的基本概念的一项是( C )。

A.容器 B.构件 C.线程 D.布局管理器 【解析】线程不属于java.awt包中的基本概念的一项,其他三个都是。 16.下列关于AWT构件的说法中错误的一项是( D )。 A.Frame是顶级窗口,它无法直接监听键盘输入事件

14

B.对话框需要依赖于其他窗口而存在 C.菜单只能被添加到菜单栏中

D.可以将菜单添加到任意容器的某处

【解析】菜单只能添加到Applet、Frame等容器中,不能添加到任意容器的某处。

17.JPanel的默认布局管理器是( C )。

A.BorderLayout B.GridLayout C.FlowLayout D.CardLayout

【解析】Panel、JPanel和Applet的默认布局管理器都是FlowLayout。

18.下列说法中错误的是( B )。

A.在Windows系统下,Frame窗口是有标题、边框的 B.Frame的对象实例化后,没有大小,但是可以看到 C.通过调用Frame的setSize()方法来设定窗口的大小 D.通过调用Frame的setVisible(true)方法来设置窗口为

三、判断题

可见 【解析】Frame的对象实例化后,没有大小,也不能看到,只有通过调用Frame的setSize()和setVisible(true)方法才能设定窗口的大小和可见性。

19.下列说法中错误的是( D )。

A.同一个对象可以监听一个事件源上多个不同的事件

B.一个类可以实现多个监听器接口

C.一个类中可以同时出现事件源和事件处理者 D.一个类只能实现一个监听器接口

【解析】一个类可以实现多个监听器接口,从而实现对多个事件的监听。

20.下列选项中不属于容器的一项是( C )。 A.Window B.Panel C.FlowLayout D.ScrollPane

【解析】FlowLayout类属于布局管理器,而不属于容器。

1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2.一个容器中可以混合使用多种布局策略。( × )

3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ )

4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5.在使用BorderLayout时,最多可以放入五个组件。( √ )

6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( × ) 7.Java中,并非每个事件类都只对应一个事件。( √ )

15

第11章 Java网络编程

一、填空题

1.URL是 统一资源定位器 的简称,它表示Internet/Intranet上的资源位置。这些资源可以是一个文件、一个 目录 或一个 对象 。

2.每个完整的URL由四部分组成: 传输协议 、 主机名 、 端口号 以及 文件名称 。 3.两个程序之间只有在 地址 和 端口号 方面都达成一致时才能建立连接。

4.使用URL类可以简单方便地获取信息,但是如果希望在获取信息的同时,还能够向远方的计算机节点传送信息,就需要使用另一个系统类库中的类 URLConnection 。 5.Socket称为 套接字 ,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个 Socket 。

6.Java.net中提供了两个类: ServerSocket 和 Socket ,它们分别用于服务器端和客户端的socket通信。

7.URL和Socket通信是一种面向 连接 的流式套接字通信,采用的协议是 TCP 协议。UDP通信是一种 无连接 的数据报通信,采用的协议是数据报通信协议 UDP 。

8.Java.net软件包中的类 DatagramSocket 和类 DatagramPacket 为实现UDP通信提供了支持。 9. receive() 和 send() 是DatagramSocket类中用来实现数据报传送和接收的两个重要方法。 10.JDBC API提供的类和接口在 java.sql 包中定义。

第12章 JDBC数据库操作

一、填空题

1.JDBC的基本层次结构由(Java程序)、( JDBC API)、(JDBC驱动程序管理器)、(驱动程序)和数据库五部分组成。 2.根据访问数据库的技术不同,JDBC驱动程序相应地分为(JDBC-ODBC Bridge)、(JDBC-Native API Bridge)、( JDBC-Middleware)和(Pure JDBC Driver)四种类型。

3.JDBC API所包含的接口和类非常多,都定义在(java.sql)包和(javax.sql)包中。

4.使用(Class.forName( ))方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。 5.(java.spl.Connection)接口负责建立与指定数据库的连接。 6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。 7.(ResultSet)接口表示从数据库中返回的结果集。

16

第11章 Java网络编程

一、填空题

1.URL是 统一资源定位器 的简称,它表示Internet/Intranet上的资源位置。这些资源可以是一个文件、一个 目录 或一个 对象 。

2.每个完整的URL由四部分组成: 传输协议 、 主机名 、 端口号 以及 文件名称 。 3.两个程序之间只有在 地址 和 端口号 方面都达成一致时才能建立连接。

4.使用URL类可以简单方便地获取信息,但是如果希望在获取信息的同时,还能够向远方的计算机节点传送信息,就需要使用另一个系统类库中的类 URLConnection 。 5.Socket称为 套接字 ,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个 Socket 。

6.Java.net中提供了两个类: ServerSocket 和 Socket ,它们分别用于服务器端和客户端的socket通信。

7.URL和Socket通信是一种面向 连接 的流式套接字通信,采用的协议是 TCP 协议。UDP通信是一种 无连接 的数据报通信,采用的协议是数据报通信协议 UDP 。

8.Java.net软件包中的类 DatagramSocket 和类 DatagramPacket 为实现UDP通信提供了支持。 9. receive() 和 send() 是DatagramSocket类中用来实现数据报传送和接收的两个重要方法。 10.JDBC API提供的类和接口在 java.sql 包中定义。

第12章 JDBC数据库操作

一、填空题

1.JDBC的基本层次结构由(Java程序)、( JDBC API)、(JDBC驱动程序管理器)、(驱动程序)和数据库五部分组成。 2.根据访问数据库的技术不同,JDBC驱动程序相应地分为(JDBC-ODBC Bridge)、(JDBC-Native API Bridge)、( JDBC-Middleware)和(Pure JDBC Driver)四种类型。

3.JDBC API所包含的接口和类非常多,都定义在(java.sql)包和(javax.sql)包中。

4.使用(Class.forName( ))方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。 5.(java.spl.Connection)接口负责建立与指定数据库的连接。 6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。 7.(ResultSet)接口表示从数据库中返回的结果集。

16

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

Top