全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1088
推到 Plurk!
推到 Facebook!

問一Java基礎問題

尚未結案
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-14 15:28:14 IP:210.241.xxx.xxx 未訂閱
近來對Java很有興趣看了本Java的書,發現一問題,請各位幫解一下 Apple.java class Apple { 02 String color; 03 Apple(String color){ 04 this.color = color; 05 } 06 } 07 class GoldApple extends Apple{} 08 class QC{ 09 public static void main(String[] args){ 10 String color01 = “RED”; 11 String color02 = methodA(color1); 12 methodB(color02); 13 Apple apple01 = new Apple(color01); 14 Apple apple02 = new Apple(color02); 15 Apple apple03 = apple01; 16 System.out.println(color01 == color02); 17 System.out.println(apple01 == apple02); 18 System.out.println(apple01.equals(apple02)); 19 methodC(apple01); 20 methodD(apple02); 21 System.out.println(apple02.color); 22 System.out.println(apple03.color); 23 } 24 static String methodA(String color){ return(color.concat(“”));} 25 static void methodB(String color){color = “DEEP” color;} 26 static void methodC(Apple apple){apple.color = “GREEN”;} 27 static void methodD(Apple apple){apple = new Apple (“GOLD”);} 28 } 問題(A):上述程式碼是否會產生編譯錯誤? 問題(B):若發生編譯錯誤應該如何修正或移除哪一段程式碼即可編譯成功?原因 為何? 問題(C):當程式編譯完成並執行java QC 後分別在程式碼的16、17、18、21、 22輸出的結果為何? 答案是:A:編譯錯誤. B: 07 class GoldApple extends Apple{} 原因:由於GoldApple繼承於 Apple類別,而GoldApple會產生預設的建構子透過 super()父類別不具有任何參數的建構子,但父類別中並無任何相對應 的建構子因此發生編譯時期的錯誤. C: 16 System.out.println(color01 == color02); =>true 17 System.out.println(apple01 == apple02); =>false 18 System.out.println(apple01.equals(apple02)); =>false 21 System.out.println(apple02.color); =>”RED” 22 System.out.println(apple03.color); =>”GREEN 在下對答案中的 18 行是false百思不得其解,請JAVA先進幫幫忙,謝謝
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-18 06:25:12 IP:203.204.xxx.xxx 未訂閱
Komuro 你好~ 因為equals()對於object的比較,並沒有override,你如果要比對物件應該自己 override equals()這個方法,方可正確比對,否則equals方法就是直接拿object 的reference來作比較,也就同等於"=="
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-18 09:12:30 IP:203.187.xxx.xxx 未訂閱
居然忘記,翻了書才想起來: 若不override equals()則不能在hash table中將該物件當index value用,也就只能用==進行比較,感謝你~
系統時間:2024-05-09 6:26:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!