
在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"); } }}
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"); } }}
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"); } }}
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); }}
A: 两种赋值的方式是一样的
B: 推荐a的赋值方式
C: 推荐b的赋值方式
public class LockTest { private final static Lock lock = new ReentrantLock(); public static void main(String[] args) { try { lock.tryLock(); } catch (Exception e) { e.printStackTrace(); } finally { lock.unlock(); } }}
A: lock是非公平锁
B: finally代码块不会抛出异常
C: tryLock获取锁失败则直接往下执行
想好了吗?把答案填在下面的答题区里哦:
偷偷告诉你一个小秘密:上面的5道题源于业界经典事实故障,经过广大开发者深度讨论提炼而成。类似问题及背后的解决思路,将在本周三发布的《Java开发手册》华山版中首次披露!阿里技术独家首发,敬请期待!

关注「阿里技术」
把握前沿技术脉搏