Java 将整数传递给int,反之亦然
我只是想知道为什么在方法参数为int类型的情况下可以将Integer作为参数传递,反之亦然Java 将整数传递给int,反之亦然,java,Java,我只是想知道为什么在方法参数为int类型的情况下可以将Integer作为参数传递,反之亦然 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); } } 这是自动装箱和自动取消装箱。基本上,编译器会适当
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);
}
}
这是自动装箱和自动取消装箱。基本上,编译器会适当地调用Integer.valueOf()
或x.intValue()
确切的机制实际上没有指定,但是规范的相关章节有指定。应该注意的是,此功能带来了一类神秘的NullPointerException问题。您可以开发吗?在哪种情况下,这会引发NullPointerException?@mxdsp:这根本不是问题的一部分。如果你遇到了一个无法解释的NPE,请在做了彻底的研究后再问一个新问题。(NPE上有很多问题。)抱歉,如果我不在主题范围内,但我对@Pointy comment做出了反应,我看不出这与问题无关。我还没有遇到任何NPE,但我想知道在哪种情况下自动(联合国)拳击不能安全使用,因为它可能“带来神秘的NPE”@mxdsp:Ah,这是有道理的。在将来,值得添加一个适当的“@”,这样就可以清楚地知道你在回复谁。(虽然我应该在这种情况下发现它-我的错。)自动取消装箱可能会混淆条件运算符-这是我最常见的NPE。