gpt4 book ai didi

指向原始值的 Java 包装类引用

转载 作者:行者123 更新时间:2023-11-30 02:13:49 24 4
gpt4 key购买 nike

我对IntegerCharacter等Java包装类有疑问。我知道当我们声明一个类 Abc 并可以在 Java 中为它创建一个对象时,就像

Abc a = new Abc(); 

它实例化了一个引用 Abc 类,其中我们有包含变量值的字段。我的疑问是,当我们创建 Integer 类时,例如:

Integer i = 5;

它如何指向值5?它不应该包含一个包含其值并指向 Integer 对象的字段,例如:

static int value; // To hold value 5 for Integer class

最佳答案

How is it pointing to value 5?

它指向一个保存该原始值的Integer实例。

Integer i = Integer.valueOf(5);

这是 new Integer(5) 的一点优化版本(自 Java 9 起已弃用)。该进程名为 autoboxing并由编译器生成。

Should not it contain a field which contains its value?

它确实包含一个字段。不过,它不应该是静态的并为整个类(class)共享。

private final int value;

实际上,Integer.valueOf(5) 将从缓存中获取,以及 [-128, 127] 范围内的任何值,除非有更大的 java.lang.Integer.IntegerCache.high 值已指定。

关于指向原始值的 Java 包装类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49253377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com