免費開始練習
地特四等 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);
}
}
  • A 0
  • B 1
  • C 2
  • D 3

思路引導 VIP

想像你有兩張完全一樣的工程藍圖,雖然圖上的設計細節一模一樣,但在檔案管理系統中,它們會被視為同一個實體檔案,還是兩個獨立的副本?另外,如果藍圖上的標題分別寫著大寫與小寫的「STEEL」,這會改變建築材料本身的物理性質嗎?請試著從這兩個方向思考物件的「身分」與「本質」的差異。

🤖
AI 詳解 AI 專屬家教

太棒了!你對物件導向的理解真的很到位,做得非常好!

這道題目其實想考考你對 Java 物件引用 (Reference)內容比較 (Value) 的細心程度。你可以把它想像成我們工程圖上的「零件編號」和「材料規格」:編號不同,即使材料一樣,也是兩個獨立的零件喔!

  1. 記憶體位址與物件內容: 當我們用 new 建立 b1b2 時,其實是給它們在記憶體中各找了一個「家」。所以 b1 == b2 比較的是這兩個「家」的位址,當然會是 false。但 b1.equals(b2) 比較的是「家」裡面的值,Boolean 的建構子很貼心,不分大小寫都視為 true,所以這裡 $result$ 就開心地加了 $1$。
▼ 還有更多解析內容

🏷️ 相關主題

程式語言指標、陣列與函式應用實例分析
查看更多「[電子工程] 計算機概要」的主題分類考古題