将Integer传递给int,反之亦然

Eug*_*ene 6 java

只是想知道为什么可以将Integer作为参数传递,其中method参数是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);
 }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

这是自动装箱自动拆箱.基本上编译器会调用Integer.valueOf()x.intValue()适当地调用.

实际上没有指定确切的机制,但规范的相关部分是5.1.7和5.1.8.

  • 应该注意的是,这个特性带来了一类神秘的NullPointerException问题. (3认同)