admin 管理员组文章数量: 887053
2023年12月21日发(作者:tikz中文手册)
第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(){
n("Method1 in class A");
}
}
public class B{
void method2(){
n("Method2 in class B");
}
public static void main(String[] args){
n("main() in class B");
}
}
(A) (B)
(C) (D)
内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。
5.Java语言属于( B )种语言?
(A)面向机器的语言 (B)面向对象的语言
(C)面向过程的语言 (D)面向操作系统的语言
【解析】Java语言是一种纯面向对象的语言。
6.下列关于Application和Applet程序的说法中不正确的一项是( B )。
(A)Application使用解释器
(B)Application不使用独立的解释器
(C)Applet在浏览器中运行
(D)Applet必须继承Java的Applet类
【解析】Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。
7.下列选项中,不属于Java核心包的一项是( A )。
(A) (B)
(C) (D)
【解析】凡是以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)只有和文件
(C)编译不成功 (D)、和文件
【解析】由于该程序包含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./**...**/
二、填空题
1.Java程序的编译和执行模式包括2点,是 半编译
和 半解释 。
2.Java语言支持 TCP/IP 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的 对象 。
3.开发Java程序的一般步骤是:源程序编辑、 生成字节码 和 解释执行 。
4.每个Java Application程序可以包括许多方法,但是必须有且只能有一个 main() 方法,统一格式为 public static
void main(String[] args) ,它是程序执行的入口。
三、判断题
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[])
5.JVM把字节码程序与各种不同的 操作系统 和 硬件 分开,使得Java程序独立于平台。
6.在Java程序中,能在WWW浏览器上运行的是 Applet
程序。
7.Java源程序文件和字节码文件的扩展名分别为 .java
和 .class 。
8.如果在Java程序中需要使用包中的所有类,则应该在程序开始处加上 import .* 语句。1.Java语言具有较好的安全性和可移植性及与平台无关等特性。( √ )
2.Java语言的源程序不是编译型的,而是编译解释型的。( √ )
3.Java Application程序中,必有一个主方法main(),该方法有没有参数都可以。( √ )
4.r()可以接收用户从键盘输入的简单数据。( √ )
5.Java程序中不区分大小写字母。( × )
6.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。( √ )
7.System类中的println()方法分行显示信息,而print()方法不分行显示信息。( √ )
8.当前路径的标识是“.”。 ( √ )
9.java命令不区分大小写,而javac命令区分大小写。( × )
10.printf()和 format()方法使用指定格式字符串和参数,将格式化字符串写入到PrintStream类型的输出流(对象)中。( √ )
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+ "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语言对字符的大小写是敏感的,False3
不是false,因此False是合法的Java标识符。
19.以下的变量定义语句中,合法的是( D )
(A)float _*5 = 123.456F; (B)byte $_b1 = 12345;
(C)int _long_ = 123456L;
(D)double d = _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 三、判断题 1.Java语言使用的是Unicode字符集,每个字符在内存中占8位。( × ) 2.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。( √ ) 3.所有的变量在使用前都必须进行初始化。( × ) 4.已知byte i = (byte)127; i = i +1;这两个语句能被成功编译。( √ ) 5.String str="abcdefghi"; char chr=(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 ();( × ) 9.String str="abcedf"; int length=; ( × ) 10.short shortValue=220; byte byteValue=shortValue; ( × ) 11.int[] intArray[60]; ( × ) 12.char[] str="abcdefgh"; ( × ) 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){ } 二、填空题 1.跳转语句包括break、continue、return和throw 2.switch语句先计算switch后面的 表达式 的值,再和各 case 语句后的值做比较。 3.if语句合法的条件值是 boolean 类型。 4.continue语句必须使用于 循环 语句中。 5.break语句有两种用途:一种从switch 语句的分支中跳出,一种是从循环语句内部跳出。 6.do - while循环首先执行一遍 循环体 ,而while循环首先判断 表达式的值 。 (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++ (A)1 (B)2 (C)3 (D)4 【解析】执行1次循环体后,y的值为20,x值为11,然后执行while,此时x++的值为11,y—的值为20,因此x++ 7.已知如下代码: switch(m){ case0:n("Condition 0"); case1:n("Condition 1"); case2:n("Condition 2"); case3:n("Condition3");break; default:n("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,因此可以继续向后执行。 7.与C++语言不同,Java语言不通过 goto 语句实现跳转。 8.每一个else子句都必须和它前面的一个距离它最近的 if 子句相对应。 9.在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的 case 语句块。 10.在for循环语句中可以声明变量,其作用域是 for循环体 。 5 第4章 类与对象 一、选择题 1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?( D ) (A)protected (B)public (C)default (D)private 2.在Java语言中,哪一个包中的类是自动导入的?( A ) A) B) C) D) 【解析】只有包中的类能够被自动导入。 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.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个默认构造方法。这个方法没有 形式参数 ,也没有任何 具体语句 ,不能完成任何操作。 6 7.静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是 相同 (相同/不同)的数值。 8.静态数据成员既可以通过 对象名 来访问,也可以通过 类名 直接访问它。 9.定义常量时要用关键字 final ,同时需要说明常量的 数据类型 并指出常量的 具体值 。 10.方法体内定义变量时,变量前不能加 修饰符 ;局部变量在使用前必须 明确赋值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 默认 的值。 11.static方法中只能引用 static 类型的数据成员和 static 类型的成员方法;而非static类型的方法中既可以引用 static 类型的数据成员和成员方法,也可以引用非static 类型的数据成员和成员方法。 12.引用static类型的方法时,可以使用 类名 做前缀,也可以使用 对象名 做前缀。 13.当程序中需要引用包中的类时,导入该包中类的语句为 import .*。 14.定义类时需要 class 关键字,继承类时需要 extends 关键字,实现接口时需要关键字 implements 。 三、判断题 1.类是一种类型,也是对象的模板。( √ ) 2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × ) 4.创建对象时系统将调用适当的构造方法给对象初始化。( √ ) 5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。( √ ) 6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。(7.对象可作方法参数,对象数组不能作方法参数。( × ) 8.class是定义类的惟一关键字。( √ ) 9.Java语言会自动回收内存中的垃圾。( √ ) √ ) 7 第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. 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.不一定 二、填空题 2.下列程序的运行结果是( C )。 public class X5_1_2 extends x{ int ab(){ static int aa=10; aa++; n(aa); } public static void main(String[] args) { X5_1_2 x=new X5_1_2(); (); } } A.10 B.11 C.编译错误 D.运行成功,但不输出 【解析】方法体内的局部变量不能使用static修饰符。 【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类不能有子类。 8 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 语言不允许同时继承一个类并实现一个接口。( × ) 9 第6章 一、选择题 1.给出下面程序代码: byte[] a1, a2[]; byte a3[][]; byte[][] a4; 下列数组操作语句中哪一个是不正确的?( A ) A.a2 = a1 B.a2 = a3 C.a2 = a4 D.a3 = a4 public class X6_1_5 { 【解析】只有维数相同的数组才能相互赋值。 public static void main(String[] args) { 2.关于数组,下列说法中不正确的是( C )。 AB aa = new AB(); AB bb; A.数组是最简单的复合数据类型,是一系列数据的集合 bb = aa; B.数组元素可以是基本数据类型、对象或其他数组 n((aa)); C.定义数组时必须分配内存 } } D.一个数组中所有元素都必须具有相同的数据类型 class AB{ int x = 100; } 【解析】数组元素可以是基本数据类型、对象或其他数组。 A.true B.false C.编译错误 D.100 3.设有下列数组定义语句: 【解析】同一个类的两个对象可以相互赋值,赋值后int a[] = {1, 2, 3}; 两个对象具有相同的存储空间,因此是相同的。 则对此语句的叙述错误的是( C )。 6.已知有定义:String s="I love",下面哪个表达式正确?A.定义了一个名为a的一维数组 ( A ) B.a数组有3个元素 A.s += "you"; B.char c = s[1]; C.a数组元素的下标为1~3 C.int len = ; D.String s = rCase(); D.数组中每个元素的类型都是整数 【解析】字符串对象可以执行“+=”运算,但不能用【解析】数组元素的下标是从0开始的。 s[1]这种方式取其中的字符,也不能用length求它的长度, 可以用length()求其长度,因此B、C不正确,不能再次 定义s字符串,因此D不正确。 二、填空题 1. Object类 是所有类的直接或间接父类,它在 包中。 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 类。它们都是 的子类。 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 )。 10 第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{ n("Finally"); } } } A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译 【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。 7.下列代码中给出正确的在方法体内抛出异常的是8.下列描述了Java语言通过面相对象的方法进行异常处( B )。 理的好处,请选出不在这些好处范围之内的一项(C) A.new throw Exception(" ");B.throw new Exception(" "); A.把各种不同的异常事件进行分类,体现了良好的继承C.throws IOException(); D.throws IOException; 性 B.把错误处理代码从常规代码中分离出来 【解析】在方法体内抛出异常时只能使用throw,而不能C.可以利用异常处理机制代替传统的控制流程 使用throws,另外,“new Exception(" ")”是创建一个异D.这种机制对具有动态运行特性的复杂程序提供了强有常,因此B是正确的。 力的支持 11 二、填空题 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.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ ) 12 第8章 输入流与输出流 一、选择题 1.下列数据流中,属于输入流的一项是( B )。 A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流 【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。 4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入“//x”处,完成要求的功能( B )。 import .*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x n(ch); } catch(IOException e){ tackTrace(); } } } A.ch = (); B.ch = (char)(); C.ch = (char)(); D.ch = (int)(); 【解析】()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,对象中没有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. B. C. D. 【解析】 包是Java语言提供处理不同类型流的类所在的包。 3.不属于包中的接口的是( C )。 A.DataInput B.DataOutput C.DataInputStream D.ObjectInput 【解析】DataInputStream是包中的一个类,其他三个则是包中的接口。5.下列程序实现了在当前包dir815下新建一个目录subDir815,选择正确的一项填入程序的横线处,使程序符合要求( D )。 package dir815; import .*; public class X8_1_5 { public static void main(String[] args){ char ch; try{ File path = ; if(()) n("successful!"); } catch(Exception e){ tackTrace(); } } } A.new File("subDir815"); B.new File("815"); C.new File("dir815subDir815"); D.new File("dir815/subDir815"); 【解析】在程序中,目录之间的连接符是“”或“/”,因此首先排除B和C;而默认情况下,创建相对目录是在当前目录下进行,而dir815也在当前目录下,因此要在dir815下创建新的目录,就必须使用D的形式。 8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )? A.BufferedInputStream B.RandomAccessFile C.FileWriter D.FileReader 【解析】只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。 13 9.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( C )? A.PrintStream B.FileInputStream C.InputStreamReader D.FileReader 【解析】InputStreamReader类的对象可以作为BufferedReader类构造方法的参数。 10.若文件是RandomAccessFile的实例f,并且其基本文件长度大于0,则下面的语句实现的功能是( B )。 (()-1); A.将文件指针指向文件的第一个字符后面 B.将文件指针指向文件的最后一个字符前面 C.将文件指针指向文件的最后一个字符后面 D.会导致seek()方法抛出一个IOException异常 【解析】通过调用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. B. C. D. 【解析】是Java系统的标准输入流对象,而和则是Java系统的标准输出流和标准错误对象,则是System类的退出方法。 14.Java系统标准输出对象使用的输出流是( A )。 A.PrintStream B.PrintWriter C.DataOutputStream D.FileReader 【解析】属性是PrintStream类型的对象。 二、填空题 1.Java的输入输出流包括 字节流 、 字符流 、 文件流 、 对象流 以及多线程之间通信的 管道流 。 2.凡是从外部设备流向中央处理器的数据流,称之为 输入 流;反之,称之为 输出 流。 3.包中的接口中,处理字节流的有 DataInput 接口和 DataOutput 接口。 4.所有的字节输入流都从 InputStream 类继承,所有的字节输出流都从 OutputSteam 类继承。 5.与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读写Unicode字符的字符流 Reader 类和 Writer 类。 6.对一般的计算机系统,标准输入通常是 键盘 ,标准输出通常是 显示器 。 7.Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是 和 。 8.System类的所有属性和方法都是 Static类型 的,即调用时需要以类名System为前缀。 9.Java的标准输入是 InputStream 类的对象,当程序中需要从键盘读入数据的时候,只需调用的 read 方法即可。 10.执行()方法将从键盘缓冲区读入一个 字节 的数据,然而返回的却是16比特的 整形量 ,需要注意的是只有这个 整形量 的低位字节是真正输入的数据,其高位字节 全部为0 。 11.只能从键盘读取 二进制 的数据,而不能把这些比特信息转换为整数、字符、浮点数或字符串等复杂数据类型的量。 12.Java的标准输出是 PrintStream 类的对象。 PrintStream 类是过滤输出流类FilterOutputStream的一个子类,其中定义了向屏幕输送不同类型数据的方法 print() 和 println() 。 13.在Java中,标准错误设备用 表示。它属于PrintStream 类对象。 14.在计算机系统中,需要长期保留的数据是以 文件 的形式存放在磁盘、磁带等外存储设备中的。 15. 目录 是管理文件的特殊机制,同类文件保存在同一 目录 下可以简化文件的管理,提高工作效率。 16.Java语言的包中的 File 类是专门用来管理磁盘文件和目录的。调用 File 类的方法则可以完成对文件或目录的常用管理操作,如创建文件或目录、删除文件或目录、查看文件的有关信息等。 17.File类也虽然在包中,但它不是InputStream或者OutputStream的子类,因为它不负责 数据的输入输出 ,而专门用来管理 文件和目录 。 18.如果希望从磁盘文件读取数据,或者将数据写入文件,还需要使用文件输入输出流类 14 FileInputStream 和 FileOutputStream 。 19.Java系统提供的FileInputStream类是用于读取文件中的 字节 数据的 字节 文件输入流类;FileOutputStream类是用于向文件写入 字节 数据的 字节 文件输出流。 20.利用 DataInputStream 类和 DataOutputStream 类提供的成员方法可以方便地从文件中读写不同类型的数据。 21.Java中的 RandomAccessFile 类提供了随机访问文件的功能,它继承了 Object 类,用 DataInput 和 DataOutput 接口来实现。 三、判断题 1.文件缓冲流的作用是提高文件的读/写效率。( √ ) 2.通过File类可对文件属性进行修改。( √ ) 3.IOException必须被捕获或抛出。( √ ) 4.Java系统的标准输入对象是,标准输出对象有两个,分别是标准输出和标准错误输出。( √ ) 5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。( √ ) 6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。( √ ) 15 第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. B. C. D. 【解析】Thread类定义在包中,因此使用时可以不用显式加载。 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 类及其子类的对象来表示线程,新建的线程在它的一个完整的生命周期中通常要经历 新 16 生 、 就绪 、 运行 、 阻塞 和 死亡 等五种状态。 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之间,即_PRIORITY和_PRIORITY之间。如果没有明确地设置线程的优先级别,每个线程的优先级都为常数8。( × ) 6.当线程类所定义的run( )方法执行完毕,线程的运行就会终止。( √ ) 7.线程的启动是通过引用其start()方法而实现的。( √ ) 17 第10章 组件及事件处理 一、选择题 1.下列说法中错误的一项是( B )。 A.构件是一个可视化的能与用户在屏幕上交互的对象 B.构件能够独立显示出来 C.构件必须放在某个容器中才能正确显示 D.一个按钮可以是一个构件 【解析】构件不能独立显示,它必须放在某个容器中才能正确显示。 2.进行Java基本GUI设计需要用到的包是( C )。A. B. C. D. 【解析】进行Java基本GUI设计需要用到的包是和 3.Container是下列哪一个类的子类( D )? A.Graphics B.Window C.Applet D.Component 【解析】Container类是由Component类派生的。 4.的父类是( B )。 A. B. Window C. Panel D.Pane 【解析】的父类 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 ; B.import .*; C.import D.import .*; 【解析】“import .*;”语句的含义是加载awt包中的所有类,而其他都不是。 14.在类中若要处理ActionEvent事件,则该类需要实现的接口是( B )。 A.Runnable B.ActionListener C.Serializable D.Event 【解析】处理ActionEvent事件的类需要实现的接口是ActionListener,它其中包含了actionPerformed()方法。 15.下列不属于包中的基本概念的一项是( C )。 A.容器 B.构件 C.线程 D.布局管理器 【解析】线程不属于包中的基本概念的一项,其他三个都是。 18 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程序的GUI设计工具,主要包括下述三个概念,它们分别是: 构件 、 容器 和 布局管理器 。 5.构件不能独立地显示出来,必须将构件放在一定的 容器 中才可以显示出来。 6.容器本身也是一个 构件 ,具有构件的所有性质,另外还具有放置其他 构件 和 容器 的功能。 7.容器中的布局管理器负责各个构件的 位置 和 大小 ,因此用户无法在这种情况下设置构件的这些属性。 8.如果用户确实需要亲自设置构件大小或位置,则应取消该容器的布局管理器,方法为 setLayout(null) 。 9.所有的构件都可以通过 add() 方法向容器中添加构件。 10.有3种类型的容器: Window 、 Panel 、 ScrollPane 。 11.FlowLayout类是 直接子类。其布局策略是:将容器中的构件按照加入的先后顺序从 左 向 右 排列,当一行排满之后就转到下一行继续从 左 向 右 排列,每一行中的构件都 居中 排列。它是 Panel 和 Applet 缺省使用的布局编辑策略。 12.对于一个原本不使用FlowLayout布局编辑器的容器,若需要将其布局策略改为FlowLayout,可以使用 setLayout(new FlowLayout()) 方法。 13.BorderLayout类的布局策略是:把容器内的空间划分为 东 、 西 、 南 、 北 、 中 五个区域,它们分别用字符串常量 East 、 West 、 South 、 North 、 Center 表示。 14.BorderLayout是 Window 、 Frame 、 Dialog 和 JApplet 的缺省布局策略。 15.在事件处理的过程中,主要涉及3类对象: 事件 、 事件源 和 事件处理者 。 16.事件类主要有两个: bject 类以及 nt 类。 17.根据监听器器和注册监听器所在的类之间的关系,我们可以把事件处理分为以下几种情况:利用 外部类 对象、 本类 对象、 内部类 对象和 匿名内部类 对象处理事件。 18.标准构件是由 容器 和 基本构件 构成,容器是能够容纳其他构件的对象,而基本构件是放置在容器中而不能在其内部存放其他构件的对象。 19.按钮可以引发 ActionEvent 事件,TextField可产生 TextEvent 和 ActionEvent 事件,下拉列表可产生 ItemEvent 项目事件。当用户单击复选框使其选中状态发生变化时就会引发 ItemEvent 类代表的选择事件。滚动条可以引发 AjustmentEvent 类代表的调整事件。 19 20.ActionEvent事件类包含 ACTION_PERFOMED 事件,该事件通过 ActionListener 接口进行监听,通过调用 addActionListener() 方法将事件源注册到监听器,通过调用 actionPerformed(ActionEvent e) 方法实现监听后的动作,通过调用 getSource()方法 可以获得发生事件的事件源对象,调用 getActionCommand() 方法可以获取引发事件动作的命令名。 21.通常在itemStateChanged(ItemEvent e)方法里,会调用 mSelectable() 方法获得产生这个选择事件的列表(List)对象的引用,再利用列表对象的方法 getSelectedIndex() 或 getSelectedItem() 就可以方便地得知用户选择了列表的哪个选项。 22.列表的双击事件 不能 (能/不能)覆盖单击事件。当用户双击一个列表选项时,首先产生一个 ItemEvent 事件,然后再产生一个 ActionEvent 事件。 22.调整事件(AdjustmentEvent)类只包含一个事件—— AJUSTMENT_VALUE_CHANGED事件, 代表鼠标拖动滚动条滑块的动作。 23.调用MouseEvent对象的 getID() 方法就可以知道用户引发的是哪个具体的鼠标事件。 24.在菜单项之间增加一条横向分隔线的方法是 addSeparator() 。 25.将菜单项添加到菜单中以及将菜单添加的菜单栏中所用的方法都是 add() ,将菜单栏添加到窗口中的方法是 setMenuBar() 。 26.对话框构件一般可以接受 ComponentEvent 事件和 FocusEvent 事件。 27.创建字体后,可以用 Graphics 类的成员方法 setFont() 来设置自己希望使用的字体。 28.Java中可以利用Graphics2D类的 drawImage() 方法显示图像。 29.在Swing中完全可以使用 包中的各种类进行事件处理,同时它也可以使用 包中的类处理事件,而AWT则只能使用 包中的各种类进行事件处理。 30.可将JOptionPane类的对话框分为4种类型,分别是只给出提示信息的 Message Dialog 、要求用户进行确认的 Confirm Dialog 、可输入数据的 Input Dialog 和由用户自己定义类型的 Option Dialog 。 三、判断题 1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2.一个容器中可以混合使用多种布局策略。( × ) 3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ ) 4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5.在使用BorderLayout时,最多可以放入五个组件。( √ ) 6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( × ) 7.Java中,并非每个事件类都只对应一个事件。( √ ) 20 第11章 Java网络编程 一、填空题 1.URL是 统一资源定位器 的简称,它表示Internet/Intranet上的资源位置。这些资源可以是一个文件、一个 目录 或一个 对象 。 2.每个完整的URL由四部分组成: 传输协议 、 主机名 、 端口号 以及 文件名称 。 3.两个程序之间只有在 地址 和 端口号 方面都达成一致时才能建立连接。 4.使用URL类可以简单方便地获取信息,但是如果希望在获取信息的同时,还能够向远方的计算机节点传送信息,就需要使用另一个系统类库中的类 URLConnection 。 5.Socket称为 套接字 ,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个 Socket 。 6.中提供了两个类: ServerSocket 和 Socket ,它们分别用于服务器端和客户端的socket通信。 7.URL和Socket通信是一种面向 连接 的流式套接字通信,采用的协议是 TCP 协议。UDP通信是一种 无连接 的数据报通信,采用的协议是数据报通信协议 UDP 。 8.软件包中的类 DatagramSocket 和类 DatagramPacket 为实现UDP通信提供了支持。 9. receive() 和 send() 是DatagramSocket类中用来实现数据报传送和接收的两个重要方法。 10.JDBC API提供的类和接口在 包中定义。 第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所包含的接口和类非常多,都定义在()包和()包中。 4.使用(e( ))方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。 5.(tion)接口负责建立与指定数据库的连接。 6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。 7.(ResultSet)接口表示从数据库中返回的结果集。 21
版权声明:本文标题:JAVA各章习题及答案 - 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703169361h440777.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论