Java 中的自动装箱原语有什么意义?

What's the point of autoboxing primitives in Java?

拥有 IntegerBoolean 等并称它们为“...装箱”有什么意义,如果它们的行为不像您可以传递的盒装对象 "by ref" 和拆箱改变他们的价值?

这里有一个 "unboxing" 的例子,我发现它并不是真正的拆箱。

    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;
    }

它打印 true 和 9 btw。

拥有这些包装器的意义 类 主要用于泛型。在 Java 中,如果我想创建一个整数 ArrayList,我不能执行以下操作:

ArrayList<int> intList = new ArrayList<int>()

这是行不通的,因为泛型只适用于对象,而 "int" 是原始类型。通过使用包装器,

ArrayList<Integer> intList = new ArrayList<Integer>()

我可以解决这个问题。

Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes the other way, this is called unboxing. Reference :https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

Java 中的自动装箱原语有什么意义?

  1. 可以节省您一些时间。

    int s=4; Integer s1=new Integer(s); //without autoboxing Integr s1=s; //autoboxing (saves time and some code) int k=s1; //unboxing

为什么Integer/Float/Decimal对象?(用整数来解释)

  1. Integers/Floats/Doubles etc. 的 ArrayList,如 Maroun 的回答所述。

  2. Java 库 returns 整数对象中的一些内置函数。因此,您可以使用自动装箱而不是使用 returnedIntegerObject.intValue() 将值简单地存储在 primitive int 中。

让我们将String s="5"转换为整数。

  • 使用内置函数public static Integer valueOf(String s)。如您所见,此函数的 return 类型是 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