在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");
}
}
}
1/这段代码输出的结果是:
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");
}
}
}
2/这段代码输出的结果是:
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");
}
}
}
3/下列哪种说法是正确的:
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);
}
}
4/下列哪种说法是正确的:
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();
}
}
}
5/下列哪种说法是错误的:
A: lock是非公平锁
B: finally代码块不会抛出异常
C: tryLock获取锁失败则直接往下执行
想好了吗?评论区留下你的答案,6月19日12:00选取5位答对者每人送200元阿里云代金券!
偷偷告诉你一个小秘密:上面的5道题源于业界经典事实故障,经过广大开发者深度讨论提炼而成。类似问题及背后的解决思路,将在阿里云开发者社区本周三发布的《Java开发手册》华山版中首次披露!阿里云开发者社区重磅推出,敬请期待!
揭晓时刻
本期问答的正确答案是BBBCB,恭喜以下五位答对的同学赢得了200元阿里云代金券:
wyg_kehan;1479559279009360;志松;shangl;1634760016844146
我们会尽快将200元代金券发送给获奖同学的账户中~
想了解更多经典问题和解决思路吗?请关注Java手册主页,免费最新版《Java开发手册》及各项插件现已发布,等你下载!更有《Java手册》作者孤尽权威直播解读新版思路,6月27日我们不见不散!