Java 自虐题精选

64 阅读1分钟

第一题 泛型擦除 B

import java.util.HashSet;
import java.util.Set;

public class T {
    public static void main(String[] args) {
        Set<Short> s = new HashSet<>();
        for(short i=0;i<100;i++){
            s.add(i);
            s.remove(i-1); // short - int = int
        }
        System.out.println(s.size());
    }
}
// A. 1
// B. 100
// C. Throw Excption

第二题

  • URL not good
  • URI right

第三题 类的加载顺序

public class Elvis {
    public static final Elvis ELVIS = new Elvis();

    private Elvis() {
    }

    private static final Boolean LIVING = true;
    private final Boolean alive = LIVING;

    public final Boolean lives() {
        return alive;
    }

    public static void main(String[] args) {
        // System.out.println(ELVIS.lives());
        System.out.println(ELVIS.lives() ? "活着" : "死亡");
    }
}
// A. 活着
// B. 死亡
// C. Throw Excption

修复后

public class Elvis {
    private static final Boolean LIVING = true;
    public static final Elvis ELVIS = new Elvis();
    private Elvis() {
    }

    // private static final Boolean LIVING = true; // to late
    private final Boolean alive = LIVING;

    public final Boolean lives() {
        return alive;
    }

    public static void main(String[] args) {
        // System.out.println(ELVIS.lives());
        System.out.println(ELVIS.lives() ? "活着" : "死亡");
    }
}

第四题 Math.abs(int) 可能返回负数

    public static void main(String[] args) {
        int x = Integer.MIN_VALUE;
        System.out.println(Math.abs(x)); // -2147483648
    }

JLS15.25. Conditional Operator ? :

    public static void main(String[] args) {
        boolean codition = true;
        Number result = codition ? Integer.valueOf(3) : Float.valueOf(1.0f);
        System.out.println(result);
    }
    // 3.0

JLS15.25

image.png

Number result;
if(codition){result=Integer.valueOf(3);}
else{result=Float.valueOf(1.0f);}