牛客刷java记录第5天

发布时间 2023-10-07 16:44:56作者: yx1024

第一题,下列代码运行结果是?


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();
    }
}

解析:
执行顺序:

  1. new Z();
  2. public Z()-----------------发现还有父类X
  3. public X()-----------------发现还有成员变量y,接着去初始化Y类
  4. Y y = new Y();
  5. public Y(){输出“Y”}--------然后回到X构造方法
  6. 输出“x”--------------------回到Z的构造方法,发现还有成员成员变量y
  7. Y y = new Y();
  8. 输出"Y"
  9. 输出"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