面向对象程序设计-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 (C)3个字节码文件,扩展名为.java 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)Java不支持多线程
(B)一个Java源文件不允许有多个公共类 (D)Java程序分为Application和Applet两类
(C)Java通过接口支持多重继承 【解析】Java是支持多线程的语言。
9.阅读下列代码,选出该代码段正确的文件名( C )。
class A{ }
public class B{ }
(A)A.java
(B)A.class (C)B.java (D)B.class
【解析】Java源文件名必须和公共类的名字完全一样,源文件的扩展名为.java。 10.编译下面源程序会得到哪些文件( D )?
class A1{ } 1
void method2(){ }
public static void main(String[] args){ }
System.out.println(\System.out.println(\void method1(){ }
System.out.println(\
(B)1个字节码文件,扩展名为.class (D)3个字节码文件,扩展名为.class
【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。
class A2{ }
public class B{ }
(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程序独立于平台。 7.Java源程序文件和字节码文件的扩展名分别为 .java 和 .class 。
8.如果在Java程序中需要使用java.utile包中的所有类,则应该在程序开始处加上 import java.utitle.* 语句。 三、编程题
1.编写一个Java Application类型的程序,输出“This is my first Java Application!”。
【编程分析】 要编写Java Application类型的程序,需要在Exclipse中创建一个Java Application类型的工程,这时Exclipse会自动创建程序框架,该框架包含一个公共类,其中包含一个main()方法。删除main()方法中自动生成的代码,编写自己的代码即可。由于该程序要求输出一句话,因此在main()方法中直接调用System.out.println()或System.out.print()方法即可实现。 【参考程序】
public class X3_1 { }
【运行结果】
This is my first Java Application! 第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位Unicode2
public static void main(String args[]){
System.out.println(\
public static void main(String[] args){ }
}
字符
【解析】Java中的字符采用的是16位的Unicode字符。
6.下列关于基本数据类型的取值范围的描述中,正确的一个是( B )。
(A)byte类型的取值范围是-128~128 (B)boolean类型的取值范围是真或假 (C)char类型的取值范围是0~65536 127,其他类型也是如此。
7.下列关于Java语言简单数据类型的说法中,正确的一项是( A )。
(A)以0开头的整数代表8进制整型常量 (B)以0x或0X开头的整数代表8进制整型常量
(C)boolean类型的数据作为类成员变量的时候,相同默认的初始值为true (D)double类型的数据占计算机存储的32位 【解析】根据每种数据类型的特性进行判断。 8.下列Java语句中,不正确的一项是( C )。
(A)int 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)\
【解析】整数和整数相加得到两个整数的和,而整数和字符串相加得到的是字符串。 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; 3
(D)short类型的取值范围是-32767~32767
【解析】根据每种类型占几个字节即可推算出其取值范围,如byte类型占1个字节,即共包含28个数值,其取值范围范围应为-128~
【解析】(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 。(十进制表示) 17.表达式10^2的值为 8 。(十进制表示)
19.若a、b为int型变量,并且已分别赋值为5和10,则表达式(a++)+(++b)+a*b的值为 82 。 20.假设i=10, j=20, k=30,则表达式 !(i 3.编写一个Java Application类型的程序,从键盘上输入三角形的三条边的长度,计算三角形的面积和周长并输出。根据三角形边长求面积公式如下: area?s*(s?a)*(s?b)*(s?c),其中a、b、c为三角形的三条边,s=(a+b+c)/2。 【编程分析】该程序由于涉及到数据输入,因此首先建立输入流对象,输入三角形三条边a、b、c的值,然后求出中间变量s的值,最后利用数学方法Math.sqrt()方法求出三角形的面积并输出。 【参考程序】 import java.io.*; public class X2_3_3 { public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); double a, b, c, s, area; String str; str = br.readLine(); } 4 a = Double.parseDouble(str); b = Double.parseDouble(str); str = br.readLine(); c = Double.parseDouble(str); s = (a+b+c)/2.0; area = Math.sqrt(s*(s-a)*(s-b)*(s-c)); System.out.println(\ str = br.readLine(); } 【运行结果】 3 4 5 area = 6.0 注意:输入的三角形的三条边必须满足三角形的构成规则,如果不满足则输出错误结果。 4.编写一个Java Application类型的程序,从键盘上输入摄氏温度C,计算华氏温度F的值并输出。其转换公式如下: F = (9 / 5) * C + 32 【编程分析】该程序和上一个程序类似,在此不再赘述。 【参考程序】 import java.io.*; public class X2_3_4 { public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); } } 【运行结果】 37 F = 69.0 5.已知圆球的体积公式为4/3?r3,编一程序,输入圆球半径,计算并输出球的体积。 【编程分析】该程序和第3题类似,在此不再赘述。 【参考程序】 import java.io.*; public class X2_3_5 { public static void main(String[] args) throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int radius; double volume; String str; System.out.print(\ str = br.readLine(); radius = Integer.parseInt(str); volume=4*Math.PI*Math.pow(radius,3)/3; System.out.println(\ } } 【运行结果】 5 BufferedReader br = new BufferedReader(isr); double C, F; String str; str = br.readLine(); F=(9 / 5) * C + 32; C = Double.parseDouble(str); System.out.println(\