为什么 Java 中的常量要声明为静态变量?
class Foo{
static final int FII = 2 ;
}
我理解final的用法,但为什么它必须是静态的呢?为什么它应该是一个类变量而不是实例变量?
为什么 Java 中的常量要声明为静态变量?
class Foo{
static final int FII = 2 ;
}
我理解final的用法,但为什么它必须是静态的呢?为什么它应该是一个类变量而不是实例变量?
final
声明的不可变对象都是一个常量,无论其作用域如何。 - Jezorconst
和 define
,一个将在编译时评估,另一个将在运行时评估,但最重要的是它们都创建了一个常量。 - RainMath
实例都有不同的pi值(尽管Math
甚至不允许构造实例),或者每个String
实例都有不同的大小写不敏感排序,那将意味着什么?这样做是为了让你能够在没有该类实例的情况下访问它们。
要求创建一个实例才能访问常量字段有些浪费资源。
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/lang/Math.java -
这是一个指向Java Math类源代码的链接。public final class Math {
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
public static final double PI = 3.14159265358979323846;
}
FII
副本? - Bart Kiersfinal int FII = 2;
。 - Jon Lin