Java语言程序设计(第2版)第1-6章 课后习题答案解析 下载本文

内容发布更新时间 : 2024/4/30 16:06:59星期一 下面是文章的全部内容请认真阅读。

B. 浮点型数12.456是单精度的

C. 布尔型常量只有两个可选值:true和false D. 字符串常量含有结束符'\\0 '

2-10 下列关于定义符号常量的描述中,错误的是 A,C 。

A. 定义符号常量使用关键字const B. 定义符号常量时要赋初值

C. 符号常量既可以定义为类成员,又可在方法中定义 D. 定义符号常量时必须给出数据类型

2-11 下列关于变量的默认值的描述,其中错误的是 B,C 。

A. 定义变量而没有进行初始化时,该变量具有默认值 B. 字符型变量的默认值为换行符 C. 布尔型变量的默认值是true D. 变量的默认值是可以被改变的

2-12 下列关于变量定义的描述中,正确的是 A,C 。

A. 定义变量时至少应指出变量名字和类型

B. 定义变量时没有给出初值该变量可能是无意义值 C. 定义变量时,同一个类型多个变量间可用逗号分隔 D. 定义变量时必须要给变量初始化

2-13 下列关于变量作用域的描述,错误的是 D 。

A. 在某个作用域定义的变量,仅在该作用域内是可见的,而在该作用域外是不可 见的

B. 在类中定义的变量的作用域在该类中的方法内可以使用 C. 在方法中定义 的变量的作用域仅在该方法体内

D. 在方法中作用域可嵌套,在嵌套的作用域中可以定义同名变量 2-14 下列关于增1(++)减1(--)1运算符的描述中,正确的是 A,B 。

A. 增1 减1运算符都是单目运算符

B. 增1 减1运算符都具有前缀运算和后缀运算 C. 增1 减1运算符不会改变变量的值

D. 增1 减1运算符前缀运算和后缀运算后表达式值是相同的 2-15 关于运算符优先级的描述中,错误的是 D 。

A. 在表达式中,优先级高的运算符先进行计算 B. 赋值运算符优先级最高

C. 单目运算符优先级高于双目和三目运算符 D. 逻辑运算符优先级高于逻辑位运算符 2-16 下列关于表达式的描述中,正确的是 A,C 。

A. 任何表达式都有确定的值和类型

B. 算数表达式的类型由第一个操作数的类型决定 C. 逻辑表达式的操作数是逻辑型的

D. 赋值表达式的类型取决于右值表达式的类型 2-17 下列表达式中,非法的是 B,C 。

int a=5,b=6;double c=1.1,d=2.2 A. a+c+++d B. (a+c)- - C. c<

D. a!=b?c:d

2-18 下列关于条件语句的描述中,错误的是 A,C 。

A. If语句可以有多个else子句和else if子句 B. If语句中可以没有else子句和else if子句 C. If语句中的〈条件〉可以使用任何表达式 D. If语句的if体、else体内可以有循环语句 2-19 下列关于开关语句的描述中,错误的是 B,C,D 。

A. 开关语句中,default子句可以省略

B. 开关语句中,case子句的〈语句序列〉中一定含有break语句 C. 开关语句中,case 子句和default子句都可以有多个 D. 退出开关语句的唯一条件是执行break语句 2-20 下列关于循环语句的描述中,错误的是 B,D 。

A. 任何一种循环体内都可以包含一种循环语句 B. 循环体可以是空语句,也可以是空 C. 循环体内可以出现多个break语句 D. 循环语句中,循环体至少被执行一次 2-21 下列循环语句的循环次数是 D 。

int i=5; do{ System.out.println(i--); i--;

}while(i!=0); A. 0 B. 1 C. 5 D. 无限

2-22 下列循环语句中,循环体被执行的次数为 D 。

for (int i=0,j=0;(j!=18)||(i<4);i++) A. 3 B. 4

C. 不确定 D. 无限

2-23 下列关于Java语言的数组描述中,错误的是 D 。

A. 数组的长度通常用length来表示 B. 数组下标从0开始

C. 数组元素是按顺序存放在内在的 D. 数组在赋初值和赋值时都不判界

2-24 下列关于数组的定义形式,错误的是 A,C,D 。

A. int[]a;a=new int;

B. char b[];b=new char[80] C. int[]c=new char[10] D. int[]d[3]=new int[2][]

2-25 下列关于字符串的描述中,错误的是 B 。

A. Java语言中,字符串分为字符串常量和字符串变量两种

B. 两种不同的字符串都String类的对象

C. Java语言中不再使用字符数组存放字符串

D. Java Application程序的main()和参数args[]是一个String类的对象数组,用它可存放若干个命令行参数

判断题

2-1 Java语言标识符中可以使用美元符。(对) 2-2 Java语言标识符中大小写字母是没有区别的。(错) 2-3 分号(;)、逗号(,)和冒号(:)都可作为Java语言中的分隔符。(对) 2-4 文档注释符/**…*/是Java语言特有的注释符。(对)

2-5 Java语言的基础数据类型有4种:整型、浮点型、字符型和布尔型。(对) 2-6 Java语言的复合数据类型有3种:数组、类和包。(错) 2-7 Java语言中,字节型与字符型是一样的。(错)

2-8 Java语言是一种强类型语言,数据类型转换有两种:隐含转换和强制转换(对) 2-9 数据由高类型转换到低类型时,采用强制转换,数据精度要受到损失。(对) 2-10 布尔型常量可以自动转换为短整型常量 。(错)

2-11 Java语言使用的是Unicode字符集,每个字符在内在中占8位。(错) 2-12 Java语言的字符串中不隐含结束符。(对) 2-13 Java语言中定义符号常量使用final关键字。(对)

2-14 Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(对) 2-15 Java语言中只有无符号的字符型。(对) 2-16 字符型变量中只存放一个字符。(对)

2-17 定义变量时必须进行初始化,否则变量具有无意义的值。(错) 2-18 若定义变量时不进行初始化,则该变量一定具有默认值。(错)

2-19 Java语言中,变量出现的位置只有一种,即为类体内定义的成员变量。(错) 2-20 Java语言规定在的程序块中不允许定义同名变量。(对) 2-21 求余运算符%可用于整数和浮点数。(错) 2-22 关系运算符组成的表达式是逻辑表达式。(错)

2-23 逻辑运算符&和&&是没有区别的,都具有逻辑与的功能。(错) 2-24 运算符& 是逻辑与运算符还是按位与运算符取决于操作数的类型。(对)

2-25 运算符“>>”和“>>>”都是右移运算符,其区别在于对向右移出的位是舍弃还是保

留。(错)

2-26 赋值运算符组成的赋值表达式中,通常将右边表达式的类型转换为左边变量的类

型后再赋值。(对)

2-27 三目运算符的3个操作数中,第一个操作数的类型必须是逻辑型的(对) 2-28 强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。(对) 2-29 对象运算符instanceof是一个单目运算符,其表达式的值的类的对象。(错) 2-30 内存分配运算符new可以为创建的数组分配内存空间,但不能为创建的变量分配

空间。

2-31 运算符的优先级中,最低的是三目运算符。(错)

2-32 运算符的结合性中,除了三目运算符是自右向左外,其余都是自左向右。(错) 2-33 关系表达式和逻辑表达式的值都是布尔型的。(对) 2-34 赋值表达式的值不能是逻辑型的。(错)

2-35 条件表达式的类型总是“?”和“:”之间的操作数的类型。(错)

2-36 块语句可能嵌套,外层块语句定义的变量在内层块语句中是可见的(对)

2-37 条件自勉中的<条件>表达式可以是任何表达式。(错)

2-38 在条件语句的嵌套结构中,一个if子句最多有一个else子句与它配对,而且一定

是距离它最近的。(对)

2-39 开关语句中,case子句后面的<语句序列>可以是块语句。(对)、 2-40 循环语句中,<条件>表达式必须是逻辑型表达式。(对) 2-41 在Java语言中,break语句不能作用在<标号名>的左边。(错) 2-42 Java语言中,数组在静态和动态赋值时都判越界。(对)

2-43 说明或声明数组时不分配内存大小,创建数组时分配内存大小。(对) 2-44 基本数据类型的数组在创建时系统将指定默认值。(对) 2-45 数组在定义时可以进行初始化,使用初始值表。(对) 2-46 Java语言中数组元素只有下标表示,没有指针表示。(对)

2-47 创建数组时,系统自动将数组元素个数存放在length变量中,可供用户对数组操

作时使用。(对)

2-48 字符串可分为字符串常量和字符串变量两种,它们都是对象。(对) 2-49 Java语言中不使用字符数组存放字符串(对) 2-50 下列创建字符串s的方法是错误的。(对)

char ch[]={'m',m','n','n'}; char s[]=new char(ch);

计算表达式的值,上机验证其结果题 2-1 已知:int a=3,b=5;

求下列表达式的值: (1) (a+b)%b (2) b>>a (3) -b>>>a (4) A&b (5) ++a-b++ 答案:(1)3 (2)0 (3)53670911 (4)1 (5)-1 2-1 已知:double x=1.5,y=2.8;

求下列表达式的值: (1) x++>y— (2) x+4/5 (3) 2*x==y (4) y/6*6 (5) y+=x-=1 答案(1)false (2)1.5 (3)false (4)2.8 (5)3.3 2-3 已知:Boolean b1=true, b2=false; int a=6;

求值: (1) b1&b2

(2) !b1&&b2||b2 (3) b2&b1|!b2 (4) b1!=b2

(5) !(a>6)&a6|b2=true) 答案:(1)false (2)false 2-4 已知:int a[]={3,5,7,9};

(3)true (4)false (5)true

求值:

a[0]+a[1] a[3]=6

a[2]*a[3]>4*a[3] (a[0]+=a[1])+ ++a[2] for(int i=1;i<4;i++) a[0]+=a[i];

答案:(1)8 (2)6 (3)true (4)16 分析程序输出结果题 2-1 Exer2_1.java程序

public class Exer2_1 {

public static void main(String args[]) {

int i=3; char c='p'; float f=3.5f; double d=32.56; short s=25; booleab=true; string st=\

System.out.println(\System.out.println(\

System.out.println(\System.out.println(\System.out.println(\} }

输出结果如下: i+s=28 d+f=36.06

st+\c+2=r !b||b=true b?i:d=3.0

2-2 Exer2_2.java程序

public class Exer2_2 {

public static void main(String args[]) {

int suma=0,sumb=0;

for(int a=0,b=0;a<5;a++,b++) {

suma+=a;

(1) (2) (3) (4) (5)

(5)24