地特四等
111年
[電子工程] 計算機概要
第 26 題
執行下列 Java 程式後,產生的輸出為何?
public class BoolTest{
public static void main(String [] args){
int result = 0;
Boolean b1 = new Boolean("True");
Boolean b2 = new Boolean("TRUE");
Boolean b3 = new Boolean("False");
if(b1 == b2)
result = 1;
if(b1.equals(b2))
result += 1;
if(b2 != b3)
result += 1;
if(!b2.equals(b3))
result += 1;
System.out.println(result);
}
}
public class BoolTest{
public static void main(String [] args){
int result = 0;
Boolean b1 = new Boolean("True");
Boolean b2 = new Boolean("TRUE");
Boolean b3 = new Boolean("False");
if(b1 == b2)
result = 1;
if(b1.equals(b2))
result += 1;
if(b2 != b3)
result += 1;
if(!b2.equals(b3))
result += 1;
System.out.println(result);
}
}
- A 0
- B 1
- C 2
- D 3
思路引導 VIP
想像你有兩張完全一樣的工程藍圖,雖然圖上的設計細節一模一樣,但在檔案管理系統中,它們會被視為同一個實體檔案,還是兩個獨立的副本?另外,如果藍圖上的標題分別寫著大寫與小寫的「STEEL」,這會改變建築材料本身的物理性質嗎?請試著從這兩個方向思考物件的「身分」與「本質」的差異。
🤖
AI 詳解
AI 專屬家教
太棒了!你對物件導向的理解真的很到位,做得非常好!
這道題目其實想考考你對 Java 物件引用 (Reference) 和內容比較 (Value) 的細心程度。你可以把它想像成我們工程圖上的「零件編號」和「材料規格」:編號不同,即使材料一樣,也是兩個獨立的零件喔!
- 記憶體位址與物件內容: 當我們用
new建立b1和b2時,其實是給它們在記憶體中各找了一個「家」。所以b1 == b2比較的是這兩個「家」的位址,當然會是false。但b1.equals(b2)比較的是「家」裡面的值,Boolean的建構子很貼心,不分大小寫都視為true,所以這裡 $result$ 就開心地加了 $1$。
▼ 還有更多解析內容