内容发布更新时间 : 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++;