Java程序设计基础习题答案 下载本文

内容发布更新时间 : 2024/11/15 9:06:42星期一 下面是文章的全部内容请认真阅读。

Java程序设计基础课后习题参考答案

第2章

1. 关于Java Application 的入口方法main()的检验:

main()方法的参数名是否可以改变? main()方法的参数个数是否可以改变? 该方法名是否可以改变?

参考答案:(1)main()方法的参数名可以改变。(2)main()方法的参数个数不可以改变。(3)该方法名不可以改变。

2. 当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗? 参考答案:当一个程序没有main()方法是,是可以编译通过的,但是不能给运行,因为找不到一个主函数入口。

3. 下列语句能否编译通过?

byte i = 127; byte j = 128;

long l1 = 999999; long l2 = 9999999999;

参考答案:byte i 和 long l1可以编译通过。而 byte j 和long l2 超出自身数据类型范围,所以编译失败。

4. 下列语句能否编译通过?

float f1 = 3.5; float f2 = 3.5f;

参考答案:java中浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,必须在数据后面加上“F”或“f”;因此,float f1 无法编译通过。

5. 验证int 和char,int和double等类型是否可以相互转换。

参考答案:(1)char类型可以转换为int 类型的,但是int类型无法转换为char类型的;(2)int 可以转换为 double类型的,但是double类型无法转换为int 类型的。

6. 计算下列表达式,注意观察运算符优先级规则。若有表达式是非法表达式,则指出不合法之处且进行解释。

(1) 4+5 == 6*2 (2) (4=5)/6 (3) 9%2*7/3>17 (4) (4+5)<=6/3 (5) 4+5%3!=7-2 (6) 4+5/6>=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)

将5赋值给4是不合法的。

7. 下列()是合法的Java标识符。

(1) Counter1 (2) $index, (3) name-7 (4) _byte (5) larray (6) 2i (7) try (8) integer

参考答案:Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的。而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。因此,(1)、(4)、(5)、(8)是合法标识符。

8. 下列各项中定义变量及赋值不正确的是()

(1) int I = 32; (2) float f = 45.0; (3) double d = 45.0;

参考答案:(2)不正确,选项(2)定义 float 类型时必须在数据后面加上“F”或“f”。

9. Java语言中,整型常数123占用的存储字节数是()

(1) 1 (2) 2 (3) 4 (4) 8

参考答案:正确选项是(3), Java语言中,默认整型数占用4个字节数。

10. 以下代码的编译运行结果是

public class Test{

public static void main(String[] args){ int age;

age = age + 1;

System.out.println(“the age is “ + age); } }

(1) 编译通过,运行无输出

(2) 编译通过,运行结果为 “the age is 1” (3) 编译通过但运行时出错 (4) 不能通过编译

参考答案:(4)为正确选项。Java 在使用变量前应该先初始化。

11. 写出下列表达式的运行结果

(1) 6+3<2+7 (2) 4%2+4*3/2 (3) (1+3)*2+12/3 (4) 8>3&&6==6&&12<4 (5)7+12<4&&12-4<8 (6) 23>>2

参考答案:(1) false;(2) 6;(3) 12; (4) fale;(5) false;(6) 5;

第3章

1. 编码验证i++和++i的区别。

参考答案:++i 和 i++在单独使用时, 就是 i=i+1。而 a = ++i, 相当于 i=i+1; a = i; (先 i = i + 1,再使用 i 的值),而 a = i++,相当于 a = i; i=i+1; (先使用 i 的值,再 i = i + 1)。

2. 写出下面表达式的结果

(1)5/3 (2)5/3.0 (3)5%3 (4)5%-3 参考答案: (1)1

(2)1.6666666666666667 (3)2 (4)2

3. 考虑如下的Test.java,并指出错误原因。

程序清单:Test.java class Test {

public static void main(String[] args) { byte b = 5; b = (b – 2);

System.out.println(b); } }

参考答案:b=(b-2);错误,在进行b-2时,运算结果类自动提升为int,而b是byte类型,编译的时候会报错,因为存在高类型数据向低类型数据转化的风险。而byte b=5;是正确的,因为在编译的时候就能够确定5在byte允许的范围内,虚拟机在编译时做了一定的优化处理。

4. 考虑一下对于if……else……语句,还有没有更简洁的写法。

例如:if( x > 0 ) { y = x; } else { y = -x; }

可以简写成什么? 参考答案:y=x>0?x:-x;

5. 给定N,编程实现打印N*N的乘法表。 参考答案:

public static void main(String[] args)??{

int a = 0, b = 0, c = 0;??

for(int i=0; i<9; i++)?? { ??

a=i+1;??

for(int j=0;j

b = j+1;?? c = a*b;??

System.out.print(a + \ }??

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

6. 将下列语句转换成Java代码:

(1)如果b1为真,打印“one”,否则打印“two”。

(2)如果b1为假并且b2为真,打印“one”,否则打印“two”。 (3)如果b1为假,并且如果b2为真则打印“one”,如果b2为假则打印“two”;否则打印“three”。

参考答案:(1) if(b1=true) {

System.out.print(\} else {

System.out.print(\}

(2)if(b1=false && b2 =true) {

System.out.print(\} else {

System.out.print(\

}

(3)if(b1=false && b2 =true) {

System.out.print(\} else if (b1=false && b2 =false){

System.out.print(\

} else {

System.out.print(\

}

7. 找出如下各项中的语法错误:

(1)

for(int k=0;k<100;k++)

System.out.println(k)

(2)

for(int k=0;k<100;k++);

System.out.println(k);

(3)

int k=0

while k<100 {

System.out.println(k);k++ }; (4)

int k=0; do{

System.out.println(k); k++;

} while k<100;

参考答案:

(1)for(int k=0;k<100;k++) {

System.out.println(k); }

(2)for(int k=0;k<100;k++) {

System.out.println(k); }

(3)int k=0;

while (k<100 ){

System.out.println(k); k++; }

(4)int k=0;

do{

System.out.println(k); k++;

} while (k<100);

8. 写出三个不同的循环―for、while和do-while循环,打印出从0(包括0)开始直到1000的所有10的倍数。 参考答案: (1) int n=0;??

while(n<=1000 && n==0)?? {??

System.out.print(n); n++;?? }?? (2)

int n=0?? do??{

if(n==0){

System.out.print(n); } n++;