JAVA各章习题及答案 - 下载本文

第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./**...**/

二、填空题

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程序中需要使用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

第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型的变量。

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=\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){ }

二、填空题

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++

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,因此可以继续向后执行。

7.与C++语言不同,Java语言不通过 goto 语句实现跳转。

8.每一个else子句都必须和它前面的一个距离它最近的 if 子句相对应。

9.在switch语句中,完成一个case语句块后,若没有通过break语句跳出switch语句,则会继续执行后面的 case 语句块。

10.在for循环语句中可以声明变量,其作用域是 for循环体 。

5