面向对象程序设计—Java语言习题答案
第1章
一、选择题
1.下列选项中,不属于Java语言特点的一项是( C )。 (A)分布式 (B)安全性
(C)编译执行 (D)面向对象
【解析】Java程序采用解释执行的方法。在系统编译运行Java程序时,Java编译器将Java程序转化为字节码,在运行时,解释器将编译得到的字节码进行解释执行。 2.在Java语言中,( C )是最基本的元素?
(A)方法 (B)包 (C)对象 (D)接口 【解析】构成Java程序的基本元素类(抽象的对象)。
3.编译一个定义了3个类和10个方法的Java源文件后,会产生( D )个字节码文件?扩展名是( D )?
(A)13个字节码文件,扩展名为.class (B)1个字节码文件,扩展名为.class
(C)3个字节码文件,扩展名为.java (D)3个字节码文件,扩展名为.class
【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。
5.Java语言属于( B )种语言?
(A)面向机器的语言 (B)面向对象的语言 (C)面向过程的语言 (D)面向操作系统的语言 【解析】Java语言是一种纯面向对象的语言。
6.下列关于Application和Applet程序的说法中不正确的一项是( B )。
(A)Application使用解释器java.exe (B)Application不使用独立的解释器 (C)Applet在浏览器中运行 (D)Applet必须继承Java的Applet类
【解析】Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。
7.下列选项中,不属于Java核心包的一项是( A )。
(A)javax.swing (B)java.io (C)java.utile (D)java.lang
【解析】凡是以java开头的包都是Java核心包,以javax开头的包则属于Java扩展包。
8.下列描述中,不正确的是( A )。
(A)不支持多线程 (B)一个Java源文件不允许有多个公共类 (C)Java通过接口支持多重继承 (D)Java程序分为Application和Applet两类
【解析】Java是支持多线程的语言。
9.阅读下列代码,选出该代码段正确的文件名( C )。
1
class A{ void method1(){ System.out.println(\ } }
public class B{ void method2(){ System.out.println(\ } public static void main(String[] args){ System.out.println(\ } }
(A)A.java (B)A.class (C)B.java (D)B.class
【解析】Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。 10.编译下面源程序会得到哪些文件( D )?
class A1{ }
class A2{ }
public class B{ public static void main(String[] args){ } }
(A)只有B.class文件 (B)只有A1.class和A2.class文件 (C)编译不成功 (D)A1.class、A2.class和B.class文件
【解析】由于该程序包含3个类,每个类编译后都会生成1个字节码文件,因此编译后会生成以这3个类名命名的字节码文件。 二、填空题
1.Java程序的编译和执行模式包括2点,是 半编译 和 半解释 。 2.Java语言支持 TCP/IP 协议,从而使得Java程序在分布式环境中能够很方便地访问处于不同地点的 对象 。
3.开发Java程序的一般步骤是:源程序编辑、 生成字节码 和 解释执行 。 4.每个Java Application程序可以包括许多方法,但是必须有且只能有一个 main() 方法,统一格式为 public static void main(String[] args) ,它是程序执行的入口。
5.JVM把字节码程序与各种不同的 操作系统 和 硬件 分开,使得Java程序独立于平台。
6.在Java程序中,能在WWW浏览器上运行的是 Applet 程序。 7.Java源程序文件和字节码文件的扩展名分别为 .java 和 .class 。
8.如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上 import java.utitle.* 语句。
2
第2章
一、选择题
1.下列( D )是合法的标识符?
(A)12class (B)void (C)-5 (D)_blank 【解析】根据Java标识符的构成规则确定。 2.下列( B )不是Java中的保留字?
(A)if (B)sizeof (C)private (D)null 【解析】根据Java保留字表进行选择。 3.下列( C )不是合法的标识符?
(A)$million (B)$_million (C)2$_million (D)$2_million 【解析】根据Java标识符的构成规则确定。 4.下列选项中,( B )不属于Java语言的基本数据类型?
(A)整数型 (B)数组 (C)浮点型 (D)字符型 【解析】根据Java语言的基本数据类型包含的类别选取。 5.下列关于基本数据类型的说法中,不正确的一项是( D )。
(A)boolean类型变量的值只能取真或假 (B)float是带符号的32位浮点数 (C)double是带符号的64位浮点数 (D)char是8位Unicode字符
【解析】Java中的字符采用的是16位的Unicode字符。
6.下列关于基本数据类型的取值范围的描述中,正确的一个是( B )。
(A)byte类型的取值范围是-128~128 (B)boolean类型的取值范围是真或假 (C)char类型的取值范围是0~65536 (D)short类型的取值范围是-32767~32767
【解析】根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128~127,其他类型也是如此。 8.下列Java语句中,不正确的一项是( C )。
(A)$e, a, b = 10; (B)char c, d = ?a‘; (C)float e = 0.0d; (D)double c = 0.0f; 【解析】不能将double类型的常量赋值给float类型的变量。
9.在编写Java程序时,如果不为类的成员变量定义初始值,Java会给出它们的默认值,下列说法中不正确的一个是( D )。
(A)byte的默认值是0 (B)boolean的默认值是false (C)char类型的默认值是‘\\0‘ (D)long类型的默认值是0.0L 【解析】long类型的默认值是0L,而不是0.0L。 10.下列语句中不正确的一个是( B )。
(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)\
【解析】整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。
3
12.已知y=2, z=3, n=4,则经过n=n+ -y*z/n运算后n的值为( A )。
(A)3 (B)-1 (C)-12 (D)-3
【解析】根据运算符的优先级,该表达式相当于n=n+ ((-y)*z)/n。 13.已知a=2, b=3,则表达式a%b*4%b的值为( A )。
(A)2 (B)1 (C)-1 (D)-2
【解析】根据运算符的优先级,该表达式相当于((a%b)*4)%b。 14.已知x=2, y=3, z=4,则经过z- = --y – x--运算后,z的值为( D )。
(A)1 (B)2 (C)3 (D)4
【解析】在表达式运算过程中,--y的值变为2,x—的值还是2,等号右侧运算后的值为0,因此z的值没有变化。
15.表达式(12==0) && (1/0 < 1)的值为( B )。
(A)true (B)false (C)0 (D)运行时抛出异常
【解析】由于(12==0)的值为false,因此整个表达式发生短路运算,即(1/0 < 1)就没有参与运算,整个表达式的值为false。
16.设有类型定义short i=32; long j=64; 下面赋值语句中不正确的一个是( B )
(A)j=i; (B)i=j; (C)i=(short)j; (D)j=(long)i;
【解析】long类型的数据不能自动转变为short类型,因此不能将long类型的变量直接赋值给short类型。
17.现有1个char类型的变量c1=66和1个整型变量i=2,当执行c1=c1+(char)i;语句后,c1的值为( D )。
(A)'d' (B)'D' (C)68 (D)语句在编译时出错
【解析】两个字符型的数据相加,得到的是一个整数,而如果把整数再赋值给一个字符型变量则会在编译时出错。
18.下列说法中,正确的一项是( D )。
(A)字符串\的长度为6 (B)False是Java的保留字 (C)123.45L代表单精度浮点型 (D)False是合法的Java标识符
【解析】Java语言对字符的大小写是敏感的,False不是false,因此False是合法的Java标识符。
19.以下的变量定义语句中,合法的是( D )
(A)float _*5 = 123.456F; (B)byte $_b1 = 12345; (C)int _long_ = 123456L; (D)double d = Double.MAX_VALUE; 【解析】(A)中_*5不是合法的标识符,(B)中12345超出byte范围,(C)中不能将long类型的常量赋值给int型的变量。
20.下列关于运算符优先级的说法中,不正确的一个是( C )
(A)运算符按照优先级顺序表进行运算
(B)同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的 (C)同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的
(D)括号可以改变运算的优先次序
【解析】同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的。 二、填空题
1.变量是Java程序的基本存储单元之一,变量的主要类型包括2大类:字符型 和 数值型 。
2.Java语言的整数类型变量和常量一样,各自都包括4种类型的数据,它们分别是
4