为什么要将变量声明为static和final

时间:2011-06-27 10:23:34

标签: java static final

将变量声明为static以获取其值的最新和单个副本;这意味着价值将在某处改变。但为什么同一个变量应该被声明为final,这将不允许变量更改为where(常量值)?

12 个答案:

答案 0 :(得分:11)

static这样可以在不创建类实例的情况下访问变量或方法,并且该类只有一个变量,而不是每个实例都有一个变量。

无法扩展final课程。 final变量的值不能更改,它表现为常量。并且final方法不能被覆盖。

答案 1 :(得分:3)

变量定义为final的那一刻,它可能不应被称为“变量”,因为它不再“变化”:)

static变量与类的任何特定实例无关 - 它只与类本身绑定,并且只从作用域的角度来看。

所以你有 - staticfinal变量实际上是一个与任何特定类的实例无关并且不变的值。它是一个常量值,可以从Java代码中的任何位置引用。

在某些时候,当您决定更改此常量的值时,只需要进行一次更改即可将此更改正确地传播到使用此常量的所有其他类。

答案 2 :(得分:2)

声明为static的变量意味着它的值由此类的所有实例共享。将变量声明为final可以提高性能并使代码更易读。

答案 3 :(得分:1)

本地variables位于堆栈中,不是静态的。

您可以拥有静态field,这可能是也可能不是最终的。如果它不会改变,你可以将该领域作为最终。

答案 4 :(得分:1)

Java中使用

static final来表示常量。 Static用于表示类变量,因此不需要为该类实例化对象以访问该变量。

最终方法无法覆盖,最终变量只能初始化一次。

如果您只使用static关键字,那么该值将不会是常量,因为它可以再次初始化。

答案 5 :(得分:1)

可以修改

static个字段(例如public static字段可以被任何类修改。初始化后无法修改static final个字段。

答案 6 :(得分:1)

静态与获取最新单个副本无关,除非"单个副本"这意味着一个类的所有实例都有一个相同的值(但是,我认为你可能会将它与volatile混淆)。静态意味着类变量。当你希望它成为一个常量时(实际上是宣告Java常量的方式:static final),你可以使它成为最终的。

答案 7 :(得分:1)

可能会提供与constants类似的内容。

答案 8 :(得分:1)

就像你自己提到的那样,这是为了创建常量。您可以创建单个字段来保存具有特定含义的值。这样您就不必在任何地方声明该值,而是可以引用静态。

答案 9 :(得分:0)

变量只有在类fields方法中为required use或者程序more than one之间save their values时才应声明为user.lastName调用类的方法。

例如needed lastName应该是字段,因为object lifecycle期间它是static

只有当变量需要not才能在类的多个方法中使用时,或者如果程序应not在调用之间保存其值,则变量应声明为Math.max(num1,num2)班级的方法。

例如{1}} {1}} not intristed在num1和num2 after compleating此操作

答案 10 :(得分:-1)

Final会停止从中继承的所有类

答案 11 :(得分:-1)

您可以创建static final变量,以便在不实例化对象的情况下访问其值。 E.G:

public class MyClass
{
     public static final String endpoint= "http://localhost:8080/myClass":
     /* ...*/
}

然后您可以使用以下行访问数据:

MyClass.endpoint