在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
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
本文作者: 阿裡妹
本文來自雲栖社群合作夥伴“
阿裡技術”,了解相關資訊可以關注“
”。