2010-10-29 64 views
6

只是想知道爲什麼可以傳遞Integer作爲參數,其中方法參數是int類型,反之亦然?將整數傳遞給int,反之亦然

public class Salmon { 

public static Integer foo(Integer a, int b){ 
    return a - b; 
} 
public static void main(String[] args) { 
    Integer a = 10; 
    int b = 1; 
    foo(b, a); 
} 
} 

回答

7

這是自動裝箱自動拆箱。基本上,編譯器會適當地調用Integer.valueOf()x.intValue()

確切的機制實際上沒有指定,但規範的相關部分是5.1.7 and 5.1.8

+3

應該指出的是,這個功能帶來了一類神祕的NullPointerException問題。 – Pointy 2010-10-29 13:01:22

+0

你能發展嗎?在這種情況下會拋出一個NullPointerException? – mxdsp 2017-12-06 10:20:37

+0

@mxdsp:根本不是問題的一部分。如果您遇到NPE,您無法解釋,請在進行徹底研究後再提出一個新問題。 (關於NPE,有很多*問題。) – 2017-12-06 10:25:35