谁是代码界3%的王者?

在Java代码界

有些陷阱外表看起来是个青铜

实际上是王者

据说97%工程师会被“秒杀”

不信?

阿里妹这有五道“基础题”

堪称5个温柔的陷阱

似是而非,雾里看花

考验真功夫的时候到了!

public class FloatPrimitiveTest {
    public static void main(String[] args) {
        float a = 1.0f - 0.9f;
        float b = 0.9f - 0.8f;
        if (a == b) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}

01

这段代码输出的结果是:

A: true
B: false
C: 由硬件指令决定

public class FloatWrapperTest {
    public static void main(String[] args) {
        Float a = Float.valueOf(1.0f - 0.9f);
        Float b = Float.valueOf(0.9f - 0.8f);
        if (a.equals(b)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}

02

这段代码输出的结果是:

A: true
B: false
C: 编译出错

public class SwitchTest {
    public static void main(String[] args) {
        String param = null;
        switch (param) {
            case "null":
                System.out.println("null");
                break;
            default:
                System.out.println("default");
        }
    }
}

03

下列哪种说法是正确的:

A: null
B: 抛出异常
C: default

public class BigDecimalTest {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(0.1);
        System.out.println(a);
        BigDecimal b = new BigDecimal("0.1");
        System.out.println(b);
    }
}

04

下列哪种说法是正确的:

A: 两种赋值的方式是一样的
B: 推荐a的赋值方式
C: 推荐b的赋值方式

    private final static Lock lock = new ReentrantLock();

    public static void main(String[] args) {
        try {
            lock.tryLock();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
    }
}

05

下列哪种说法是错误的:

A: lock是非公平锁
B: finally代码块不会抛出异常
C: tryLock获取锁失败则直接往下执行

原文发布时间为: 2019-06-17
本文作者: 阿里妹
本文来自云栖社区合作伙伴“ 阿里技术”,了解相关信息可以关注“ 阿里技术”。

猜你喜欢

转载自yq.aliyun.com/articles/705712