看板 java 關於我們 聯絡資訊
※ 引述《hougzou (學無止境,啥時才摔到底?)》之銘言: : ※ 引述《seekyou (galagala~￾N )》之銘言: : : public class Yikes { : : 1.public static void go(Long n){System.out.println("Long ");} : : 2.public static void go(Short n){System.out.println("Short ");} : : 3.public static void go(int n){System.out.println("int ");} : : 4. public static void main(String[] args) { : : 5. short y=6; : : 6. long z=7; : : 7. go(y); : : 8. go(z); : : 9. } : : 10.} : : 這是SCJP模擬試題,output是 int Long : : 為什麼line 8 有找到對應的方法而印出 Long,而line7就沒有呢? : : 謝謝指導 : 整數型別隱式轉型為int,而long由於長度大於int, : 會造成精確度問題(這是javac告訴大家的...),所以會去找第一行。 : 可以想見,若你把第一行刪掉,則會造成編譯失敗。 我剛才試了一下,line7 改成 go((Short)y),output就是Short 這樣就可以避免隱性轉型了嗎? 好像自問自答了... = =" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.40.9