第一题,下列代码运行结果是?
class X {
Y y = new Y();
public X() {
System.out.print("X");
}
}
class Y {
public Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
public Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
解析:
执行顺序:
- new Z();
- public Z()-----------------发现还有父类X
- public X()-----------------发现还有成员变量y,接着去初始化Y类
- Y y = new Y();
- public Y(){输出“Y”}--------然后回到X构造方法
- 输出“x”--------------------回到Z的构造方法,发现还有成员成员变量y
- Y y = new Y();
- 输出"Y"
- 输出"Z"
答案:
YXYZ
第二题,求运行结果
public class Test {
private static int j = 0;
private static Boolean methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b;
b = i < 10 | methodB(4);
b = i < 10 || methodB(8);
}
public static void main(String args[]) {
methodA(0);
System.out.println(j);
}
}
解析:
|与||的区别:
- 前一个语句正确,||不会判断后一个;若前一个语句错误,才会判断后一个
- 无论对错,| 的后一个语句都会判断
&与&&判断方式也是如此。
答案:
4
第三题,以下选项中,合法的赋值语句是()
A.a>1;
B.i++;
C.a= a+1=5;
D.y = int(i);
解析:
A,C都不是赋值语句,如果把a+1换成一个变量就对了;
D项应该是y=(int)i;
答案:
B