将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);
}
}
答案 0 :(得分:7)
答案 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)