将int传递给以Integer为参数的方法?

时间:2014-07-09 14:00:56

标签: java

将int传递给以Integer作为参数的方法是否可以。 这是代码

public class PassingInt 
{
    public static void main(String args[])
    {
        int a = -1;
        passIntToInteger(a);//Is this Ok?
    }

    private static void passIntToInteger(Integer a) 
    {
        System.out.println(a);
    }

}

4 个答案:

答案 0 :(得分:7)

是的,没关系,它将自动装箱。

反之亦然,称为自动拆箱。

更多信息:

Autoboxing and Unboxing

答案 1 :(得分:5)

是的,是的。

为什么?因为自动装箱。基元转换为其对应的包装类的对象。来自Java Tutorials

  

Autoboxing是Java编译器在基元类型和相应的对象包装类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。

在你的情况下:

primitive type: int -> wrapper class: Integer

答案 2 :(得分:1)

是的,在您的示例中,它将是autoboxed(从int原语转换为Integer对象) -

public static void main(String args[]) {
    int a = -1;
    passIntToInteger(a); // <-- Auto Boxing
}

private static void passIntToInteger(Integer a) {
    System.out.println(a);
}

Java也有(自动)取消装箱(从Integer对象转换为int原语) -

public static void main(String args[]) {
    Integer a = -1;
    passIntegerToInt(a); // <-- Auto Un-Boxing
}

private static void passIntegerToInt(int a) {
    System.out.println(a);
}

这允许您使用带有集合的基元,否则List<Integer>无法存储int(例如)。

答案 3 :(得分:1)

是的,可以这样做,并且可以做相反的事情(从Integer到int)