gpt4 book ai didi

java - 常数的真正定义是什么?

转载 作者:行者123 更新时间:2023-12-01 20:25:40 27 4
gpt4 key购买 nike

public class Constants {

// This is a constant for sure!
public static final int NUMBER1 = 42;

// This is a constant.
public static final Integer NUMBER2 = 42;

// Is this really a constant?
public static final BigInteger NUMBER3 = new BigInteger("42");

}

常量必须是原语 [NUMBER1](或原语包装器 [NUMBER2]),或者 static final 就足够了将字段视为常量 [NUMBER3]?

最佳答案

当您编写final Object reference = someObject;时,reference是对someObject的常量引用。它总是“指向”该对象。

但这并不意味着 someObject 本身是不变的。

例如,在final List list = new ArrayList();中,list是一个常量,它将始终引用同一个列表,但您可以添加/删除该列表。

在您的示例中,IntegerBigInteger 都是不可变的,因此引用和引用的对象都是常量。

但请注意,JLS 有 a precise definition of what constitutes a constant expression ,仅包含基元和字符串。

关于java - 常数的真正定义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838117/

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