是"私人决赛"使变量成为常量变量?

时间:2015-12-29 23:23:36

标签: java constants

private final int MAX = 100;

是否必须是"私人静态决赛"而不是"私人决赛"?

4 个答案:

答案 0 :(得分:0)

staticMAXfinal的事实无关。它只是说明定义此常量的类的每个对象是否具有"以具有自己的常量MAX" (这不会非常有用,因为它是不变的,或者它是属于整个班级的东西。

答案 1 :(得分:0)

static表示此变量是类的属性而不是对象的属性。对于常量,可能需要将其定义为静态,因为它们通常不会在给定类的不同对象之间更改/变换其值 - 最好创建一个属性为类级别而不是将其乘以不同对象的属性具有相同值的类。 您可以节省内存,而无需创建对象来访问其值。

以下是有关静态的更多信息: https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html 这里是关于如何定义常量的问题的答案 What is the best way to implement constants in Java?

答案 2 :(得分:0)

关键字私有指的是字段/成员(变量)的可见性,最终表示一旦定义将永远不会更改其值,静态表示您实际上不需要对象才能使用此值。

<强>结论:

GIT_CURL_VERBOSE=1可以是对象的字段/成员,但您无法从外部访问它,因为它是私有的。因此,你永远不能将它用作常量。

如果你这样做:

  • public final int MAX然后MAX可以通过对象属性访问,例如private final int
  • private final int MAX然后MAX可以通过getter访问,例如foo.MAX
  • public static final int MAX然后MAX可以通过Class访问,例如Integer.MAX
  • private static final int MAX然后MAX可以在类内部访问,例如Integer.MAX

答案 3 :(得分:0)

final单独使它保持不变,static使它为它所在的每个类实例使用相同的分配空间。在Java中定义常量时,你应该同时使用它们(这可能是你有这种困惑)。为什么你应该使用它们来定义常量?因为那时你不必创建他们在AND中定义的类的实例。如果你创建了一个实例,它们会填充相同的分配空间,因此你不会浪费内存。