2.13号Java复习题目——Java 中的运算符和流程控制(面试题)
1. Java 中 i++ 和 ++i 有什么区别?
答:i 先赋值再运算(加一);i 先运算再赋值。
代码举例:
int i = 0; int i2 = i++; int j = 0; int j2 = ++j; System.out.println("i2=" + i2); System.out.println("j2=" + j2);
输出结果:i2=0,j2=1
2. 以下代码 i 的值是多少?
int i = 0;
i = i++;
System.out.println(i);
答:i=0
题目解析:因为 Java 虚拟机在执行 i++ 时,把这个值有赋值给了 i,而 i++ 是先赋值再相加,所以这个时候 i 接收到的结果自然是 0 了。
3. 以下代码 i2 和 i3 的值分别为多少?
int i = 0; int i2 = i++; int i3 = ++i;
答:i2=0,i3=2
4. 以下代码能不能正常执行?
if (true) System.out.println("laowang");
答:可以正常执行,其中判断条件的括号不能省略,大括号是可以省略的(并不建议为了省代码的而牺牲代码的可读性)。
5. 以下 switch 执行的结果是什么?
int num = 1; switch (num) { case 0: System.out.print("0"); case 1: System.out.print("1"); case 2: System.out.print("2"); case 3: System.out.print("3"); default: System.out.print("default"); }
答:123default
6. switch 能否用于 byte 类型的判断上?能否用于 long 类型的判断上?
答:switch 支持 byte 类型的判断,不支持 long 类型的判断。
题目解析:switch 支持的全部类型(JDK 8):char、byte、short、int、Charachter、Byte、Short、Integer、String、enum。
7. while 必须配合 break 一起使用的说法正确吗?
答:错误,while 可以单独使用。
代码示例:
int i = 0; while (i < 3) { System.out.println(++i); }
8. 以下代码可以正常运行吗?为什么?
int i = 0; while (i < 3) { if (i == 2) { return; } System.out.println(++i); }
答:可以正常运行,这里的 return 和 break 的效果是一致的,while 可以配合 return 或 break 一起使用。
9. 以下的程序执行结果什么?
int i = 0; do { System.out.println(++i); } while (i < 3)
答:编译器报错,do/while 之后必须使用分号 ;
结尾。
10. 以下程序输出的结果是?
String s = new String("laowang"); String s2 = new String("laowang"); System.out.println(s == s2); switch (s) { case "laowang": System.out.println("laowang"); break; default: System.out.println("default"); break; }
答:false,laowang
11. 以下代码循环执行了几次?
for (float i = 0; i != 10; i += 0.1) { System.out.println("hi"); }
答:无数次,循环永远不会停下来。由于舍入误差,因为 0.1 无法精确的用二级制表示,所以上面代码到 0.9000001 之后,会直接跳到 1.0000001,不会等于 1,所以循环就永远不会停下来。
12. 以下代码输出的结果是?
int num = -4; System.out.println(num % 2 == 1 || num % 2 == -1);
答:false
题目解析:-4 % 2 = 0 既不等于 1 也不等于 -1,所以结果为 false。
13. 以下代码输出的结果是?
int num = 4; num = ((num & 1) == 1); System.out.println(num);
A:4
B:1
C:以上都不是
答:C
题目解析:== 运算返回的是 boolean 类型,不能使用 int 接收,所以程序会报错。
如需转载
请联系作者:qq:3336987685
微信:LeoLRH