拥有Integer
,Boolean
等等并称之为" ...拳击"如果他们的行为不像盒装物品那么你可以通过参考"并取消装箱以改变其价值?
以下是"拆箱"的示例我实际发现并不是真正拆箱。
public static void main(String[] args) {
Boolean x = true;
foo(x);
System.out.println(x);
Integer num = 9;
bar(num);
System.out.println(num);
}
private static void bar(Integer num) {
num = 5;
}
static void foo(Boolean x){
boolean y = false;
x = y;
}
它打印为真,然后是9 btw。
答案 0 :(得分:1)
Autoboxing是Java编译器自动转换 原始类型与其对应的对象包装器之间 类。例如,将int转换为Integer,将double转换为a 双,等等。如果转换是另一种方式,那就是 称为拆箱。 参考:https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
Java中自动装箱原语的重点是什么?
可以节省一些时间。
int s=4;
Integer s1=new Integer(s); //without autoboxing
Integr s1=s; //autoboxing (saves time and some code)
int k=s1; //unboxing
为什么整数/浮点数/十进制对象?(使用整数来解释)
Maroun的回答中所述的Integers/Floats/Doubles etc.
的数组列表。
Java Library中的一些内置函数返回Integer对象。因此,您只需使用自动装箱而不是使用primitive int
将值存储在returnedIntegerObject.intValue()
中。
让我们将String s="5"
转换为整数。
public static Integer valueOf(String s)
。如您所见,此函数的返回类型为Integer
而不是int
。没有自动装箱:
Integer a=Integer.valueOf(s);
int b= a.intValue(); //getting the primitive int from Integer Object
使用自动装箱
int b=Integer.valueOf(s); //saves code and time
答案 1 :(得分:0)
拥有这些包装类的重点主要是用于泛型。在Java中,如果我想创建一个整数的ArrayList,我不能执行以下操作:
ArrayList<int> intList = new ArrayList<int>()
这不起作用,因为泛型只适用于对象,而“int”是原语。通过使用包装器,
ArrayList<Integer> intList = new ArrayList<Integer>()
我可以解决这个问题。