课后习题与答案

第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类中已经包含了如何创建窗口以及事件处理等内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。
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 )。
class A{
void method1(){
System.out.println("Method1 in class A");
}
}
public class B{
void method2(){
System.out.println("Method2 in class B");
}
public static void main(String[] args){
System.out.println("main() in class B");
}
}
(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个类名命名的字节码文件。
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点,是 半编译 半解释
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.* 语句。


三、判断题
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章 标识符与简单数据类型

一、选择题


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+ "aa"+3的值是( B )。
(A)"12aa3" (B)"3aa3 " (C)"12aa" (D)"aa3"
【解析】整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。
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)字符串"\\abcd" 的长度为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)括号可以改变运算的优先次序
【解析】同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。


二、填空题
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<j+k) || !(i+10<=j) 的值为 false
三、判断题
1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。( ×
2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(
3.所有的变量在使用前都必须进行初始化。( ×
4.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。(
5.String str="abcdefghi"; 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="abcedf"; int length=str.length; ( ×
10.short shortValue=220; byte byteValue=shortValue; ( ×
11.int[] intArray[60]; ( ×
12.char[] str="abcdefgh"; ( ×
13.说明或声明数组时不分配内存大小,创建数组时分配内存大小。(
14.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。(


第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++<y--);
(A)1 (B)2 (C)3 (D)4
【解析】执行1次循环体后,y的值为20,x值为11,然后执行while,此时x++的值为11,y—的值为20,因此x++<y—条件满足,判断完后,x的值变为12,y的值变为19;接着执行第2次循环体,执行完第2次循环体后,y的值为9,x值为13,然后执行while,此时x++的值为13,y—的值为9,因此x++<y—条件不满足,结束循环。因此在这个循环语句执行的过程中,循环体共执行了2次。
7.已知如下代码:
switch(m){
case0:System.out.println("Condition 0");
case1:System.out.println("Condition 1");
case2:System.out.println("Condition 2");
case3:System.out.println("Condition3");break;
default:System.out.println("OtherCondition"); }
当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,因此可以继续向后执行。


二、填空题


1.跳转语句包括breakcontinuereturnthrow
2.switch语句先计算switch后面的 表达式 的值,再和各 case 语句后的值做比较。
3.if语句合法的条件值是 boolean 类型。
4.continue语句必须使用于 循环 语句中。
5.break语句有两种用途:一种从switch 语句的分支中跳出,一种是从循环语句内部跳出。
6.do - while循环首先执行一遍 循环体 ,而while循环首先判断 表达式的值
7.与C++语言不同,Java语言不通过 goto 语句实现跳转。
8.每一个else子句都必须和它前面的一个距离它最近的 if 子句相对应。
9.在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的 case 语句块。
10.在for循环语句中可以声明变量,其作用域是 for循环体

第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 )。
(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来定义常量,既可以节省存储空间,又可以保证数值不会被改变。


 

二、填空题
1. 对象 是对事物的抽象,而是对对象的抽象和归纳。
2.从用户的角度看,Java源程序中的类分为两种: 系统定义的类 用户自己定义的类
3.一个类主要包含两个要素: 数据成员 成员方法
4.创建包时需要使用关键字 package
5.类中的 构造 方法是一个特殊的方法,该方法的方法名和类名相同。
6.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个默认构造方法。这个方法没有 形式参数 ,也没有任何 具体语句 ,不能完成任何操作。
7.静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是 相同 (相同/不同)的数值。
8.静态数据成员既可以通过 对象名 来访问,也可以通过 类名 直接访问它。
9.定义常量时要用关键字 final ,同时需要说明常量的 数据类型 并指出常量的 具体值
10.方法体内定义变量时,变量前不能加 修饰符 ;局部变量在使用前必须 明确赋值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 默认 的值。
11.static方法中只能引用 static 类型的数据成员和 static 类型的成员方法;而非static类型的方法中既可以引用 static 类型的数据成员和成员方法,也可以引用非static 类型的数据成员和成员方法。
12.引用static类型的方法时,可以使用 类名 做前缀,也可以使用 对象名 做前缀。
13.当程序中需要引用java.awt.event包中的类时,导入该包中类的语句为 import java.awt.event.*
14.定义类时需要 class 关键字,继承类时需要 extends 关键字,实现接口时需要关键字 implements

、判断题
1.类是一种类型,也是对象的模板。(
2.类中说明的方法可以定义在类体外。( ×
3.实例方法中不能引用类变量。( ×
4.创建对象时系统将调用适当的构造方法给对象初始化。(
5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。(
6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。(
7.对象可作方法参数,对象数组不能作方法参数。( ×
8.class是定义类的惟一关键字。(
9.Java语言会自动回收内存中的垃圾。(


第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不对。
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修饰符。


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 )。
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类不能有子类。


二、填空题
1.消息就是向对象发出 服务请求 ,是对 数据成员 成员方法 的引用。
2.在面向对象系统中,消息分为两类 公有消息 私有消息
3.在面向对象程序设计中,采用 继承 机制可以有效地组织程序结构。充分利用已有的类来创建更复杂的类,大大提高程序开发的效率,提高代码的复用率,降低维护的工作量。
4. 数据成员的隐藏 是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员。
5.子类可以重新定义与父类同名的成员方法,实现对父类方法的 覆盖
6.子类在重新定义父类已有的方法时,应保持与父类完全相同的 方法名 返回值类型 参数列表 ,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。
7.this代表了 当前对象 的一个引用,super表示的是当前对象的 直接父类对象 的引用。
8.抽象类不能 创建 对象,该工作由抽象类派生的非抽象子类来实现。
9.如果父类中已有同名的abstract方法,则子类中就 不能 (能/不能)再有同名的抽象方法。
10.abstract类中不能有 private 访问权限的数据成员或成员方法。
11. interface 是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的修饰符是 public static final ,接口中的成员方法默认的修饰符是 public abstract
12.如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须 实现 该接口的所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以 不实现 该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的 方法体
13.包的作用有两个,一是 划分类名空间 ,二是 控制类之间的访问
14.封装也称 信息隐藏 ,是指类的设计者只为类的使用者提供类的可以访问的部分(包括类的数据成员和成员方法),而把类中的其他成员 隐藏 起来,使用户不能访问的机制。
15.Java提供了4种访问权限来实现封装机制,即 private protected 默认 public
16.Java中提供两种多态机制, 重载 覆盖
17.当一个构造方法需要调用另一个构造方法时,可以使用关键字 this ,同时这个调用语句应该是整个构造方法的 第一条 可执行语句。
18.如果子类自己没有构造方法,那么父类也一定 没有 (有/没有)带参的构造方法,此时它将继承父类的 无参构造方法 作为自己的构造方法;如果子类自己定义了构造方法,则在创建新对象时,它将先执行 父类 的构造方法,然后再执行自己的 构造方法
19.对于父类的含参数构造方法,子类可以通过在自己的构造方法中使用 super 关键字来调用它,但这个调用语句必须是子类构造方法的 第一条 可执行语句。
20.创建一个名为myPachkage的包的语句为 package myPackage; ,该语句应该放在程序第一行 位置。

、判断题
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="I love",下面哪个表达式正确?( A )
A.s += "you"; 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 的子类。


第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{
return;
}
finally{
System.out.println("Finally");
}
}
}
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的主要目的是为了 通知所有预调用此方法的方法

三、判断题
1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。(
2.使用try-catch-finally语句只能捕获一个异常。( ×
3.try-catch语句不可以嵌套使用。( ×
4.Error类所定义的异常是无法捕获的。(
5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。(
6.用户自定义异常类是通过继承Throwable类来创建的。( ×
7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。(

第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("successful!");
}
catch(Exception e){
e.printStackTrace();
}
}
}
A.new File("subDir815"); B.new File("dir815.subDir815");
C.new File("dir815\subDir815"); D.new File("dir815/subDir815");
【解析】在程序中,目录之间的连接符是“\\”或“/”,因此首先排除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

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系统的标准输出流和标准错误对象,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 类提供的成员方法可以方便地从文件中读写不同类型的数据。
21.Java中的 RandomAccessFile 类提供了随机访问文件的功能,它继承了 Object 类,用 DataInput DataOutput 接口来实现。

三、判断题
1.文件缓冲流的作用是提高文件的读/写效率。(
2.通过File类可对文件属性进行修改。(
3.IOException必须被捕获或抛出。(
4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。(
5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。(
6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。(


第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.代表优先级的常数值越大优先级越低
【解析】代表优先级的常数值越大优先级越高


二、填空题
1.多线程是指程序中同时存在着个执行体,它们按几条不同的执行路线共同工作,独立完成各自的功能而互不干扰。
2.每个Java程序都有一个缺省的主线程,对于Application类型的程序来说,主线程是方法 main() 执行的线程。
3.Java语言使用 Thread 类及其子类的对象来表示线程,新建的线程在它的一个完整的生命周期中通常要经历 新生 就绪 运行 阻塞 死亡 等五种状态。
4.在Java中,创建线程的方法有两种:一种方法是通过创建 Thread 类的子类来实现,另一种方法是通过实现 Runnable 接口的类来实现。
5.用户可以通过调用Thread类的方法 setPriority() 来修改系统自动设定的线程优先级,使之符合程序的特定需要。
6. start() 方法将启动线程对象,使之从新建状态转入就绪状态并进入就绪队列排队。
7.Thread类和Runnable接口中共有的方法是 run() ,只有Thread类中有而Runnable接口中没有的方法是 start() ,因此通过实现Runnable接口创建的线程类要想启动线程,必须在程序中创建 Thread 类的对象。
8.在Java中,实现同步操作的方法是在共享内存变量的方法前加 synchronized 修饰符。
9.线程的优先级是一个在 1 10 之间的正整数,数值越大,优先级越,未设定优先级的线程其优先级取缺省值 5
10.Thread类中代表最高优先级的常量是 MAX_PRIORITY ,表示最低优先级的常量是 MIN_PRIORITY

三、判断题
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章 组件及事件处理

一、选择题


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是顶级窗口,它无法直接监听键盘输入事件
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.Java编程语言是一种跨平台的编程语言,在编写图形用户界面方面,也要支持 跨平台 功能。
2.Java的图形用户界面技术经历了两个发展阶段,分别通过提供 awt 开发包和 swing 开发包来体现。
3.在进行界面设计的时候,只要掌握好AWT和Swing的三点思路,就能编写出较好的图形用户界面:首先是 界面中的构件如何放置 ,其次是 如何让构件响应用户的操作 ,第三是 掌握每种构件的显式效果和响应用户操作
4.java.awt包提供了基本的java程序的GUI设计工具,主要包括下述三个概念,它们分别是: 构件 容器 布局管理器
5.构件不能独立地显示出来,必须将构件放在一定的 容器 中才可以显示出来。
6.容器本身也是一个 构件 ,具有构件的所有性质,另外还具有放置其他 构件 容器 的功能。
7.容器中的布局管理器负责各个构件的 位置 大小 ,因此用户无法在这种情况下设置构件的这些属性。
8.如果用户确实需要亲自设置构件大小或位置,则应取消该容器的布局管理器,方法为 setLayout(null)
9.所有的构件都可以通过 add() 方法向容器中添加构件。
10.有3种类型的容器: Window Panel ScrollPane
11.FlowLayout类是 java.lang.Object 直接子类。其布局策略是:将容器中的构件按照加入的先后顺序从排列,当一行排满之后就转到下一行继续从排列,每一行中的构件都 居中 排列。它是 Panel Applet 缺省使用的布局编辑策略。
12.对于一个原本不使用FlowLayout布局编辑器的容器,若需要将其布局策略改为FlowLayout,可以使用 setLayout(new FlowLayout()) 方法。
13.BorderLayout类的布局策略是:把容器内的空间划分为 西
五个区域,它们分别用字符串常量 East West South North Center 表示。
14.BorderLayout是 Window Frame Dialog JApplet 的缺省布局策略。
15.在事件处理的过程中,主要涉及3类对象: 事件 事件源 事件处理者
16.事件类主要有两个: java.util.EventObject 类以及 java.awt.AWTEvent 类。
17.根据监听器器和注册监听器所在的类之间的关系,我们可以把事件处理分为以下几种情况:利用 外部类 对象、 本类 对象、 内部类 对象和 匿名内部类 对象处理事件。
18.标准构件是由 容器 基本构件 构成,容器是能够容纳其他构件的对象,而基本构件是放置在容器中而不能在其内部存放其他构件的对象。
19.按钮可以引发 ActionEvent 事件,TextField可产生 TextEvent ActionEvent 事件,下拉列表可产生 ItemEvent 项目事件。当用户单击复选框使其选中状态发生变化时就会引发 ItemEvent 类代表的选择事件。滚动条可以引发 AjustmentEvent 类代表的调整事件。
20.ActionEvent事件类包含 ACTION_PERFOMED 事件,该事件通过 ActionListener 接口进行监听,通过调用 addActionListener() 方法将事件源注册到监听器,通过调用 actionPerformed(ActionEvent e) 方法实现监听后的动作,通过调用 getSource()方法 可以获得发生事件的事件源对象,调用 getActionCommand() 方法可以获取引发事件动作的命令名。
21.通常在itemStateChanged(ItemEvent e)方法里,会调用 e.getItemSelectable() 方法获得产生这个选择事件的列表(List)对象的引用,再利用列表对象的方法 getSelectedIndex() getSelectedItem() 就可以方便地得知用户选择了列表的哪个选项。
22.列表的双击事件 不能 (能/不能)覆盖单击事件。当用户双击一个列表选项时,首先产生一个 ItemEvent 事件,然后再产生一个 ActionEvent 事件。
22.调整事件(AdjustmentEvent)类只包含一个事件—— AJUSTMENT_VALUE_CHANGED事件, AjustmentEvent.TRACK 代表鼠标拖动滚动条滑块的动作。
23.调用MouseEvent对象的 getID() 方法就可以知道用户引发的是哪个具体的鼠标事件。
24.在菜单项之间增加一条横向分隔线的方法是 addSeparator()
25.将菜单项添加到菜单中以及将菜单添加的菜单栏中所用的方法都是 add() ,将菜单栏添加到窗口中的方法是 setMenuBar()
26.对话框构件一般可以接受 ComponentEvent 事件和 FocusEvent 事件。
27.创建字体后,可以用 Graphics 类的成员方法 setFont() 来设置自己希望使用的字体。
28.Java中可以利用Graphics2D类的 drawImage() 方法显示图像。
29.在Swing中完全可以使用 java.awt.event 包中的各种类进行事件处理,同时它也可以使用 javax.swing.event 包中的类处理事件,而AWT则只能使用 java.awt.event 包中的各种类进行事件处理。
30.可将JOptionPane类的对话框分为4种类型,分别是只给出提示信息的 Message Dialog 、要求用户进行确认的 Confirm Dialog 、可输入数据的 Input Dialog 和由用户自己定义类型的 Option Dialog

、判断题
1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( ×
2.一个容器中可以混合使用多种布局策略。( ×
3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。(
4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。(
5.在使用BorderLayout时,最多可以放入五个组件。(
6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( ×
7.Java中,并非每个事件类都只对应一个事件。(

第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)接口表示从数据库中返回的结果集。

第1章 Java开发入门

习题

  • 一、 填空题
  • 1. 将.java源文件编译为.class文件的是【 】命令。
  • 2. 在Eclipse窗口中选择菜单【 】→New→Java Project创建Java项目。
  • 3. 在安装JDK的过程中,有三个功能模块可供选择,它们分别是【 】,【 】和【 】。
  • 4. 将Hello.java文件编译为class文件,需要键入【 】命令。
  • 5. JRE是Java程序的【 】。
  • 二、 判断题
  • 1. Eclipse只是一个框架和一组服务,所有功能都是将插件组件加入到Eclipse框架中来实现的。( )
  • 2. JDK安装成功后,需要将bin目录的路径配置在环境变量path中。( )
  • 3. Java配置环境变量path的目的是为了可以查找到.class文件。( )
  • 4. JDK安装成功后,classpath环境变量必须配置。( )
  • 5. 在命令行窗口中,编译Demo.java文件可以输入javac Demo。( )
  • 三、 选择题
  • 1. 如果jdk的安装路径为:c:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项( )

A: c:\jdk

B: c:\jdk\bin

C: c:\jre\bin

D: c:\jre

  • 2. 下列关于classpath环境变量的说法中,说法正确的是( )

A: classpath配置一次后可永久使用

B: 没有classpath环境变量就不能运行Java程序

C: classpath环境变量可以让虚拟机找到class文件的目录

D: 查看当前classpath配置的命令是:classpath

  • 3. 下面哪种类型的文件可以在Java虚拟机中运行( )

A: .java

B: .jre

C: .exe

D: .class

  • 4. Java属于以下哪种语言( )

A: 机器语言

B: 汇编语言

C: 高级语言

D: 以上都不对

  • 5. 下列关于Java特点的描述中,错误的是( )。

A: Java是一门面向对象的语言

B: Java具有自动垃圾回收的机制

C: Java可以运行在Window和Linux等不同平台上

D: Java中只支持单线程序运行

答案

  • 一、 填空题
  • 1. javac
  • 2. File
  • 3. 开发工具;源代码;公共JRE
  • 4. javac Hello.java
  • 5. 运行环境
  • 二、 判断题
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 三、 选择题
  • 1. B
  • 2. C
  • 3. D
  • 4. C
  • 5. D

2章 Java编程基础

习题

  1. 填空题
  2. 可以通过【 】循环使程序能够多次键盘输入。
  3. Java中可以通过【 】类来获取随机数。
  4. 定义一个方法时,要有访问修改符、返回值类型、方法名、【 】。
  5. 当方法中的返回值类型是【 】时,可以不写return语句。
  6. 十进制数12转换成二进制的结果是【 】。
  7. 判断题
  8. 数组的最大下标的值比它的长度小1。( )
  9. 二维数组中的元素还是一个数组。( )
  10. 在表达式中,乘法和除法运算优先级别最高。( )
  11. 若x = 5,则表达式(x + 5)/3的值是3。( )
  12. 常量就是程序中常常变化的数据。( )
  13. 选择题
  14. 阅读下面的代码片段

public static int add(int a,int b) {
return a + b;
}
下列选项中,可以在main()方法中调用add()方法的是( )
A: int num = add(1.0,2.0);
B: int num = add(1,2);
C: int num = add(true,flase);
D: int num = add("1", "2");

  1. 下面关于布尔类型变量的定义中,正确的是( )

A: boolean a=TRUE;
B: boolean b=FALSE;
C: boolean c='true';
D: boolean d=false;

  1. 下面浮点型数据的定义中,错误的是( )

A: float a=1.23;
B: double b=1.23;
C: double c=1.5E4;
D: float d='a';

  1. 以下关于三元运算符的说法中,正确的是( )

A: 三元运算符第一个表达式的结果必须是boolean类型值。
B: 三元运算符第一个表达式的结果可以是任意类型的值。
C: 三元运算符只能得到基本类型的结果。
D: 以上说法都不对。

  1. while语句的循环体中不能包含的语句是( )

A: while语句
B: 方法定义语句
C: if语句
D: switch语句

答案

  1. 填空题
  2. while
  3. Random
  4. 参数列表
  5. void
  6. 1100
  7. 判断题
  8. 选择题
  9. B
  10. D
  11. A
  12. A
  13. B

3章 面向对象(上)

习题

  1. 填空题
  2. 在Java中使用【 】类型的实例对象表示一个字符串。
  3. 在Java中解决成员变量与局部变量名称冲突时,可以使用【 】关键字。
  4. 类的封装是指在定义一个类时,将类中的属性私有化,即使用【 】关键字来修饰。
  5. 在一个Java类中,可以使用【 】关键字来修饰成员变量,该变量被称作静态变量。
  6. 在垃圾回收机制中,可以通过调用【 】方法来通知Java虚拟机立即进行垃圾回收。
  7. 判断题
  8. 在Java中,对象是通过类创建出来的。( )
  9. 垃圾回收机制保证了Java程序不会出现内存溢出。( )
  10. 在成员方法中可以使用“this([参数1,参数2…])”来调用其它的构造方法。( )
  11. static关键字可以修饰成员变量,也可以修饰局部变量。( )
  12. 成员内部类,就是将一个类定义在另一个类的成员的位置。( )
  13. 选择题
  14. 请阅读下面的程序,关于程序的运行结果说法正确的是( )

class Demo{
private static int x ;
public static void main(String[] args){
System.out.println(x++);
}
}
A: 结果为0
B: 结果为1
C: 无结果
D: 编译失败

  1. 下列程序的运行结果是( )

class Demo{
private String name;
Demo(String name){this.name = name;}
private static void show(){
System.out.println(name)
}
public static void main(String[] args){
Demo d = new Demo(“lisa”);
d.show();
}
}
A: 输出lisa
B: 输出null
C: 输出name
D: 编译失败,无法从静态上下文中引用非静态变量name

  1. 下面关于构造方法的调用,正确的是( )

A: 构造方法在类定义的时候被调用
B: 构造方法在创建对象的时候被调用
C: 构造方法在调用对象方法时被调用
D: 构造方法在使用对象的变量时被调用

  1. 下列关于成员变量默认值的描述中,错误的是( )

A: byte类型的数据默认值是0
B: int类型的数据默认值是0
C: long类型的数据默认值是0
D: float类型的数据默认值是0.0f

  1. “隐藏对象的属性和实现细节,仅对外提供公有的方法”描述的是面向对象的哪个特征( )

A: 封装
B: 继承
C: 多态
D: 以上都不是

答案

  1. 填空题
  2. String
  3. this
  4. private
  5. static
  6. System.gc()
  7. 判断题
  8. 选择题
  9. A
  10. D
  11. B
  12. C
  13. A

4章 面向对象(下)

习题

  1. 填空题
  2. RuntimeException类及其子类都是【 】异常。
  3. throw关键字用于在方法中声明抛出异常的【 】。
  4. 自定义异常需要继承【 】类。
  5. 定义一个抽象类的关键字是【 】。
  6. final修饰的方法,不能被子类【 】。
  7. 判断题
  8. RuntimeException类及其子类用于表示运行时异常。( )
  9. Java中的异常类都继承自java.lang.Throwable类。( )
  10. throws关键字用于对外声明方法可能发生的异常,这样调用者在调用方法时,可以明确知道该方法有异常,并进行相关处理。( )
  11. protected修饰的类,类中的所有方法只能给子类使用。( )
  12. Object是所有类的父类。( )
  13. 选择题
  14. 下列符号中,哪个用于分隔throws关键字抛出的多个异常( )

A: ;
B: ,
C: &
D: |

  1. 下面程序运行的结果是( )

class Demo{
public static void main(String[] args){
try{
int x = div(1,2);
}catch(Exception e){
System.out.println(e);
}
System.out.println(x)
}
public static int div(int a,int b){
return a / b ;
}
}
A: 输出1
B: 输出0
C: 输出0.5
D: 编译失败

  1. 以下关于编译异常说法正确的是( )

A: 编译异常就是指Exception以及其子类
B: 编译异常如果产生,可以不用处理
C: 编译异常如果产生,必须处理,要么捕获,要么抛出
D: 编译异常指的就是Error

  1. 下列关于protected的说法中,正确的是( )

A: protected修饰的方法,只能给子类使用
B: protected修饰的类,类中的所有方法只能给子类使用
C: 如果一个类的成员被protected修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问。
D: 以上都不对

  1. 下列关于对象的类型转换的描述,说法错误的是( )

A: 对象的类型转换可通过自动转换或强制转换进行
B: 无继承关系的两个类的对象之间试图转换会出现编译错误
C: 由new语句创建的父类对象可以强制转换为子类的对象
D: 子类的对象转换为父类类型后,父类对象不能调用子类的特有方法

答案

  1. 填空题
  2. 运行时
  3. 实例对象
  4. Exception
  5. abstract
  6. 重写
  7. 判断题
  8. 选择题
  9. B
  10. C
  11. C
  12. C
  13. C

5章 Java API

习题

  1. 填空题
  2. 在程序,获取字符串长度的方法是【 】。
  3. StringBuffer类的默认容量是【 】个字符。
  4. Math类中,用于获取一个数的绝对值的方法是【 】。
  5. String类中,将字符串转换为字符数组的方法是【 】。
  6. Random类的【 】方法可以随机生成Int类型的随机数。
  7. 判断题
  8. switch语句不支持字符串类型。( )
  9. String类的append()方法可以将数组元素和空格连接成字符串。( )
  10. ceil()和floor()方法返回的都是double类型的数。( )
  11. Random类的nextInt( )方法会生成一个int类型的随机数。( )
  12. JAVA中拆箱是指将基本数据类型的对象转为引用数据类型。( )
  13. 选择题
  14. 阅读下面的代码,输出结果是( )

public static void main(String[] args) {
Random random1 = new Random(10);
Random random2 = new Random(10);
for(int i=0;i<5;i++){
System.out.print(random1.nextInt(5));
}
System.out.println();
for(int i=0;i<5;i++){
System.out.print(random2.nextInt(5));
}
}
A: 3030130301
B: 5048132680
C: 3268023579
D: 1111111111

  1. 下面哪个方法可以实现获取字符在某个字符串中第一次出现的索引( )

A: charcharAt(intindex)
B: intindexOf(intch)
C: intlastIndexOf(intch)
D: booleanendsWith(Stringsuffix)

  1. 假如indexOf()方法未能找到所指定的子字符串,那么其返回值为( )

A: false
B: 0
C: -1
D: 以上答案都不对

  1. 下列对于Runtime的描述中,错误的是( )

A: 每一个Java应用程序运行时都产生一个Runtime类实例
B: Runtime实例可以将应用程序和运行环境相结合
C: Runtime类中的方法是多例的
D: Runtime实例不需要创建,直接通过getRuntime()方法获取

  1. 阅读下列代码

public class Example {
public static void main(String[] args) {
int[] srcArray = { 11, 12, 13, 14 };
int[] destArray = { 21, 22, 23, 24 };
System.arraycopy(srcArray, 1, destArray, 2, 2);
for (int i = 0; i < destArray.length; i++) {
System.out.print(destArray[i] + " ");
}
}
}
下列选项中,程序的运行结果是( )
A: 21221213
B: 21221112
C: 21111224
D: 发生数组角标越界异常

答案

  1. 填空题
  2. length()
  3. 16
  4. abs()
  5. toCharArray ()
  6. nextInt ()
  7. 判断题
  8. 选择题
  9. A
  10. B
  11. C
  12. C
  13. A

第6章 集合类

习题

  1. 填空题
  2. 键和值对象之间存在一种对应关系,称为【 】。
  3. java.util.Iterator接口的主要作用是对【 】进行迭代的迭代器。(写顶级接口)。
  4. Map接口的主要实现类有【 】和【 】。
  5. ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中【 】方法和【 】方法用于实现元素的存取。
  6. 当向HashSet集合中添加一个对象时,首先会调用该对象的【 】方法来计算对象的哈希值。
  7. 判断题
  8. HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此性能较差。( )
  9. 可以通过Scanner类的next()方法来接受控制台的信息。( )
  10. Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value。( )
  11. Iterator接口是Java集合框架中的成员。( )
  12. 集合是长度可变的数组。( )
  13. 选择题
  14. 阅读下面代码

import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for (Object obj : list) {
if (obj.equals("bbb")) {
list.remove(obj);
}
}
System.out.println(list);
}
}
下列选项中,哪一个是程序执行后的结果( )
A: [aaa,ccc]
B: [aaa,bbb,ccc]
C: []
D: 以上都不对

  1. 下列方法中,不能用于删除Collection集合中元素的是( )

A: clear()
B: isEmpty()
C: remove()
D: removeAll()

  1. Java语言中,集合类都位于哪个包中( )

A: java.util
B: java.lang
C: java.array
D: java.collections

  1. 下列关于ArrayList的描述中,错误的是( )

A: ArrayList集合可以看作一个长度可变的数组。
B: ArrayList集合不适合做大量的增删操作。
C: ArrayList集合查找元素非常便捷。
D: ArrayList集合中的元素索引从1开始。

  1. 下面哪个对象不能直接获取java.util.Iterator迭代器进行迭代( )

A: java.util.HashSet
B: java.util.ArrayList
C: java.util.TreeSet
D: java.util.HashTable

答案

  1. 填空题
  2. 映射
  3. Collection
  4. HashMap;TreeMap
  5. add();get()
  6. hashCode()
  7. 判断题
  8. 选择题
  9. A
  10. B
  11. A
  12. D
  13. D

第7章 IO(输入输出)

习题

  1. 填空题
  2. File类中用于删除文件或整个目录的方法是【 】。
  3. java.io.FileOutputStream是【 】的子类,它是操作文件的字节输出流。
  4. IO流通常都是成对出现的,即【 】流和【 】流一起使用。
  5. 字节流缓冲区实际上是一个【 】数组。
  6. java.io包中可以用于从文件中直接读取字符的是【 】类。
  7. 判断题
  8. BufferedReader和BufferedWriter是具有缓冲功能的流,使用它们和使用其他流没有任何区别。( )
  9. 在操作文件时,如果需要删除整个目录,只需File类的delete()方法直接删除目录即可。( )
  10. Java中的数据传输“流”都位于java.io包中,称为IO(输入/输出)流( )
  11. FileOutputStream是操作文件的字节输出流,专门用于把数据写入文件。( )
  12. FileWriter用于向文件中写入字符,它属于字符输出流。( )
  13. 选择题
  14. 以下选项中,哪一个是File类delete()方法返回值的类型( )

A: boolean
B: int
C: void
D: Integer

  1. 当文件不存在或不可读时,使用FileInputStream读取文件会报下列哪一种错误( )

A: NullPointerException
B: NoSuchFieldException
C: FileNotFoundException
D: RuntimeException

  1. Java流被分为字节流、字符流两大流类,两者都作为( )类的直接子类。

A: Exception
B: Object
C: Throwable
D: 以上都不是

  1. 下面关于字节流缓冲区的说法错误的是( )

A: 使用字节流缓冲区读写文件是一个字节一个字节的读写。
B: 使用字节流缓冲区读写文件时,可以一次性读取多个字节的数据。
C: 使用字节流缓冲区读写文件,可以大大的提高文件的读写操作。
D: 字节流缓冲区就是一块内存,用于存放暂时输入输出的数据。

  1. 下列选项中,哪个是文本文件读取类( )

A: FileReader
B: FileWriter
C: BufferReader
D: BufferWriter

答案

  1. 填空题
  2. delete()
  3. OutputStream
  4. 输入;输出
  5. 字节
  6. FileReader
  7. 判断题
  8. 选择题
  9. A
  10. C
  11. B
  12. A
  13. A

第8章 GUI

习题

  1. 填空题
  2. 在【 】包中专门提供了一个【 】类,它相当于一个抽象的画笔,其中提供了各种绘制图形的方法。
  3. 如果不希望通过【 】来对容器进行布局,也可以调用容器的setLayout(null)方法,将布局管理器取消。
  4. 创建下拉式菜单需要JMenuBar、JMenu和【 】三个组件。
  5. JTextField有一个子类【 】,它表示一个密码框。
  6. 处理ActionEvent事件的监听器对象需要实现【 】接口。
  7. 判断题
  8. TableModel是用来存储列表数据的,数据包括表体的标题数据与表头的实体数据。( )
  9. 在java.awt包中专门提供了一个JmenuItem类,它相当于一个抽象的画笔,其中提供了各种绘制图形的方法,使用JmenuItem类的方法就可以完成在组件上绘制图形。( )
  10. 弹出式菜单是通过JPopup实现的。( )
  11. JText是一个操作文本的组件。( )
  12. ActionEvent类表示动作事件。( )
  13. 选择题
  14. JComboBox中用于在指定的索引处插入选项的方法是( )

A: ObjctgetItemAt(intindex)
B: intgetItemCount()
C: voidaddItem(ObjectanObject)
D: voidinsertItemAt(ObjectanObject,intindex)

  1. JTextField的构造方法中,方法JTextField(String text,int column)的作用是( )

A: 创建一个空的文本框,初始字符串为null
B: 创建一个具有指定列数的文本框,初始字符串为null
C: 创建一个显示指定初始字符串的文本框
D: 创建一个具有指定列数、并显示指定初始字符串的文本框

  1. JTextArea的构造方法中,用于创建显示指定初始文本并指定了行列的文本域的是( )

A: JTextArea()
B: JTextArea(Stringtext)
C: JTextArea(introws,intcolumns)
D: JTextArea(Stringtext,introws,intcolumns)

  1. 下列选项中,关于流式布局管理器(FlowLayout)的说法错误的是( )

A: 在流式布局下,当到达容器的边界时,会自动将组件放到下一行的开始位置
B: FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列
C: 流式布局管理器是最简单的布局管理器
D: 流式布局管理器将容器划分为五个区域

  1. 处理鼠标事件时,通过( )方法将监听器绑定到事件源对象。

A: mousePressed()
B: addMouseListener()
C: mouseEntered()
D: mouseClicked()

答案

  1. 填空题
  2. java.awt;Graphics
  3. 布局管理器
  4. JMenuItem
  5. JPasswordText
  6. ActionListener
  7. 判断题
  8. 选择题
  9. D
  10. D
  11. D
  12. D
  13. B

第9章 JDBC

习题

  1. 填空题
  2. ResultSet接口中的常量CONCUR_READ_ONLY,所代表的含义是【 】。
  3. ResultSet接口中,能将游标移动到此 ResultSet 对象的最后一行的方法是【 】。
  4. PreparedStatement是Statement的子接口,用于执行【 】的SQL语句。
  5. Statement接口的executeUpdate(String sql)方法用于执行SQL中的insert、【 】和delete语句。
  6. JDBC常用API 中,【 】类用于加载JDBC驱动并且创建与数据库的连接。
  7. 判断题
  8. 对于相同的SQL语句,Statement对象只会对其编译执行一次。( )
  9. 使用DriverManager.registerDriver进行驱动注册时,数据库驱动会被注册2次。( )
  10. ResultSet接口表示select查询语句得到的结果集,该结果集封装在一个逻辑表格中。( )
  11. Statement接口的executeUpdate(String sql)返回值是int,它表示数据库中受该SQL语句影响的记录的数目。( )
  12. JDBC的全称是Java数据库连接,它是一套用于执行HTML语句的Java API。( )
  13. 选择题
  14. 下列选项,可用于存储结果集的对象是( )

A: ResultSet
B: Connection
C: Statement
D: PreparedStatement

  1. 下面选项中,能够将游标从当前位置向下移一行的方法是( )

A: next()
B: absolute(introw)
C: previous()
D: last()

  1. 下面关于executeQuery(String sql)方法,说法正确的是( )

A: 可以执行insert语句
B: 可以执行update语句
C: 可以执行select语句
D: 可以执行delete语句

  1. 下面Statement接口的方法中,用于执行各种SQL语句的是( )

A: executeUpdate(Stringsql)
B: executeQuery(Stringsql)
C: execute(Stringsql)
D: executeDelete(Stringsql)

  1. 下面选项中,用于将参数化的SQL语句发送到数据库的方法是( )

A: prepareCall(Stringsql)
B: prepareStatement(Stringsql)
C: registerDriver(Driverdriver)
D: createStatement()

答案

  1. 填空题
  2. 以只读形式打开结果集
  3. last()
  4. 预编译
  5. update
  6. DriverManager
  7. 判断题
  8. 选择题
  9. A
  10. A
  11. C
  12. C
  13. B

第10章 多线程

习题

  1. 填空题
  2. 同步代码块中的锁对象可以是任意类型的对象,但多个线程共享的锁对象必须是【 】的。
  3. Java中有两种创建线程的方式,但大部分的多线程应用都会采用【 】方式来创建线程。
  4. Java中thread类的sleep()方法可以让让当前线程进入【 】状态。
  5. 在Thread类中提供了一个【 】方法来实现线程插队。
  6. 同步锁可以是任意【 】。
  7. 判断题
  8. 使用synchronized关键字修饰的代码块,被称作同步代码块。( )
  9. 如果两个线程访问不同类中的静态同步方法,这两个线程是不需要等待的。( )
  10. Java多线程中,如果某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有。必须在占有该资源的进程主动释放它之后,其它进程才能占有该资源,这样就一定会出现死锁。( )
  11. Runnable接口中只有一个run()方法。( )
  12. 处于等待的线程,必须被其他线程唤醒后才能继续运行。( )
  13. 选择题
  14. 下列有关Java多线程中静态同步方法的说法错误的是( )

A: 静态方法必须使用class对象来同步
B: 在使用synchronized块来同步方法时,非静态方法可以通过this来同步,而静态方法必须使用class对象来同步
C: 静态同步方法和以当前类为同步监视器的同步代码块不能同时执行
D: 静态同步方法不可以和以this为同步监视器的同步代码块同时执行

  1. 以下关于Runnable接口的描述错误的是( )

A: 通过实现Runnable接口可以创建多线程程序
B: Runnable接口是在java.lang包下
C: 实现Runnable接口必须重写run()方法
D: 通过Runnable接口中的start()方法可以开启线程

  1. 下列有关线程的两种创建方式说法错误的是( )

A: 通过继承Thread类与实现Runnable接口都可以创建多线程程序
B: 实现Runnable接口相对于继承Thread类来说,可以避免由于Java的单继承带来的局限性
C: 通过继承Thread类与实现Runnable接口创建多线程这两种方式没有区别
D: 大部分的多线程应用都会采用实现Runnable接口方式创建

  1. 下列关于线程优先级的描述,错误的是( )

A: NORM_PRIORITY代表普通优先级,默认值是5
B: 一般情况下,主函数具有普通优先级
C: 新建线程的优先级默认为最低
D: 优先级高的线程获得先执行权的几率越大

  1. 下面关于yield方法描述正确的是( )

A: yield方法是用于合并线程
B: yield方法是用于启动线程
C: yield方法是用于线程让步
D: yield方法是用于线程同步

答案

  1. 填空题
  2. 唯一
  3. 实现Runnable接口
  4. 休眠
  5. join
  6. 对象
  7. 判断题
  8. 选择题
  9. D
  10. D
  11. C
  12. C
  13. C

第11章 网络编程

习题

  1. 填空题
  2. 基于TCP/IP的参考模型将协议分成四个层次,分别是【 】、【 】、【 】和【 】。
  3. 【 】指本机地址,该地址一般用来测试使用。
  4. 在JDK中,提供了一个与IP地址相关的【 】类,该类用于封装一个IP地址。
  5. 【 】是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。
  6. DatagramPacket类的【 】方法用于返回发送端或者接收端的端口号。
  7. 判断题
  8. 目前应用最广泛的网络通信协议是UDP协议。( )
  9. IP地址用于唯一标识一台计算机,它有IPv4和Ipv6两个版本。( )
  10. 在TCP程序中,ServerSocket类的实例对象可以实现一个服务器端的程序。( )
  11. 端口号的取值范围是0~65535。( )
  12. TCP是一种用户数据报协议。( )
  13. 选择题
  14. 下列层次中,哪一层是整个TCP/IP协议的核心( )

A: 应用层
B: 传输层
C: 网络层
D: 链路层

  1. HTTP协议服务的默认端口号是( )

A: 8080
B: 8090
C: 8009
D: 80

  1. 在TCP/IP 网络中,为各种公共服务和系统保留的端口号范围是( )

A: 0~65525
B: 0~1024
C: 0~1023
D: 0~80

  1. 下列说法中,错误的是( )

A: UDP在数据传输时,数据的发送端和接收端不建立逻辑连接
B: TCP协议是面向连接的通信协议
C: 使用UDP协议传送数据保证了数据的完整性
D: TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求

  1. 以下哪个类用于实现TCP通信的客户端程序( )

A: ServerSocket
B: Socket
C: Client
D: Server

答案

  1. 填空题
  2. 链路层;网络层;传输层;应用层
  3. 127.0.0.1
  4. InetAddress
  5. UDP
  6. getPort()
  7. 判断题
  8. 选择题
  9. C
  10. D
  11. C
  12. C
  13. B