当前位置:首页 > 习题集
参考答案
上述代码的第二行处,会出现编译错误。
原因是10000000008是个整数直接量,整数的直接量的类型默认为int类型,而直接写出的整数10000000008超过了int的表达范围,所以会出现编译错误。
7 通过代码计算一段程序运行的时间
参考答案
以下代码的功能为计算1累加到1000000的所耗的时间,代码如下所示:
1. public static void main(String[] args) { 2. //开始时间
3. long startTime = System.currentTimeMillis(); 4. //计算从1加到1000000的和 5. int sum = 0;
6. for (int i = 1; i <= 1000000; i++) { 7. sum+=i; 8. }
9. //结束时间
10. long endTime = System.currentTimeMillis(); 11. //输出耗时
12. System.out.println(\耗时:\+(endTime-startTime)+\毫秒
\); 13. }
上述代码中,使用了JDK提供的 System.currentTimeMillis() 方法,该方法返回1970年1月1日零点到此时此刻所经历的毫秒数,其数据类型为long,经常用于计时操作。
另外,计算从1加到1000000的和的代码,了解即可,后续课程中会讲解到for循环的。
8 指出下面程序的运行输出结果
1. double width = 6.0; 2. double length = 4.9;
3. System.out.println(width - length);
参考答案
上述代码的输出结果为:1.0999999999999996。
上述代码的运行结果存在舍入误差问题。由于计算机内部采用2进制,人使用10进制,不是每一个2进制的小数都可以用10进制为表示的。2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样。所以,2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。
9 指出下面程序的输出结果
1. char ascii=98;
2. System.out.println(ascii);
参考答案
上述代码的输出结果为:b
原因是如果把0~65535范围内的一个int整数直接量赋给char类型变量,系统会自动把这个int类型整数当成char类型来处理。本题中,说明系统自动把整数类型98当成char类型来处理,处理的结果为b。98是b的unicode码。
10 指出下面程序中的编译错误,并更正
1. byte b1=10; 2. byte b2=20; 3. byte b3=b1+b2;
参考答案
上述代码在第三行会出现编译错误,原因是b1+b2的结果为int类型。更正后的代码如下:
1. byte b1=28; 2. byte b2=20; 3. int b3=b1+b2;
或者,使用强制类型转换,将int类型结果转换为byte类型,代码如下所示:
1. byte b1=10; 2. byte b2=20;
3. byte b3=(byte)(b1+b2);
11 指出下面程序的运行输出结果
1. int a = 1, b = 10; 2. int c1 = a++; 3. int c2 = ++b;
4. System.out.println(\ + a + \b=\ + b + \c1=\ + c1 + \c2=\
+ c2);
参考答案
输出结果为:
1. a=2, b=11, c1=1, c2=11
上述代码中,“int c1 = a++;”表示先将a的值1作为表达式a++的值,然后a再自加,故a的值为2,最后,将a++表达式的值1赋值给c1,c1的值为1;
“int c2 = ++b”表示先将b的值自加,然后将b的值作为++b表达式的值赋给c2,故b的值为11,c2的值也为11。
12 指出下面程序的运行输出结果
1. int i = 100, j = 200;
2. boolean b1 = (i > j) && (i++ > 100); 3. System.out.println(b1); 4. System.out.println(i);
参考答案
上述代码的输出结果为:
1. false 2. 100
原因是对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false。本题中(i>j)的结果为false,因此不会去计算(i++>100),所以变量b1的结果为false,i不会在自身的基础上加1,值为100。
13 完成收银柜台收款程序V1.0
共分享92篇相关文档