假设我们有
final double pi = 3.14159
我们是否应该将上述声明设为静态?
当我们想要静态最终版本与实例最终版本时?
答案 0 :(得分:2)
答案 1 :(得分:1)
静态变量绑定到类,因此它们只创建一次,并且只在内存中使用一个点。对于像PI这样的通用常量,这是完美的。
实例变量是对象实例的一部分,因此每个对象存储一次。 但请注意,最终变量不需要在代码中指定其值。它们可以在构造函数中完美地计算。因此,当常量特定于对象的实例时,它们很有用。 (比方说,你有一个Character对象在创建过程中从文件中读取它的移动速度,但之后的速度永远不会改变)
答案 2 :(得分:0)
静态final用于常量,如您显示的示例。 Instance final用于不可变类。
答案 3 :(得分:0)
在加载类时初始化静态final(保留在内存中),而每次创建实例时初始化实例final。所以对于这种情况,静态最终会更合适。
答案 4 :(得分:0)
由于pi永远不会改变,所以你应该在这里使用静态final。当它被定义为构造函数的一部分并且在编译时不知道时,您将使用实例final。如果它始终是相同的值并且在编译时已知,则它应该是静态最终值。
答案 5 :(得分:0)
当您只需要一个常量副本时,请使用static
。如果您需要每个班级实例的副本,请不要使用static
。