我检讨一类,我注意到有一个最终双变量称为Kilograms_Per,但在声明之前静态,有什么用的静态自变量是最终?这是段:“静态”对“最终”变量有什么用处?
public static final double KILOGRAMS_PER_POUND = 0.45359237;
我检讨一类,我注意到有一个最终双变量称为Kilograms_Per,但在声明之前静态,有什么用的静态自变量是最终?这是段:“静态”对“最终”变量有什么用处?
public static final double KILOGRAMS_PER_POUND = 0.45359237;
static
意味着该变量与类关联,而不是该类的一个实例。
final
表示变量在初始化后无法重新分配。如果您试图再次更改KILOGRAMS_PER_POUND,则会出现编译器错误。
static
和final
彼此正交。假设你有这个类:
public class Foo {
public static final double KILOGRAMS_PER_POUND = 0.45359237;
}
变量KILOGRAMS_PER_POUND可以是:
static
只,这意味着该变量与对象相关联,因此它是作为Foo.KILOGRAMS_PER_POUND
从另一个类引用。因为它不是final
,变量也可以重新分配,例如, Foo.KILOGRAMS_PER_POUND = 3.14
。
final
只。因为它不是static
,变量必须由类的一个实例引用,例如, Foo foo = new Foo(); System.out.println(foo.KILOGRAMS_PER_POUND);
因为变量是final
,所以不能重新分配。
static
and final
。因为它是静态的,所以它被引用为另一个类的Foo.KILOGRAMS_PER_POUND
。因为它是最终的,所以不能重新分配。
用final
关键字声明的东西是一个常量,不会改变。转换,数学常数等都被认为是常数。看看下面的例子:
public final double PI = 3.1415926; //Not as precise as many languages
我们定义了一个常量,PI,永远不会改变,第一次分配后不能更改。
静态的东西是特定于类的东西,而不是实例。我们通常这样创建新的对象:
Test t = new Test(); //If we had a Test class
然后通过点符号访问实例变量和方法,而是用静态变量和方法,可以使用类名,然后将字段或方法。这意味着它不是特定于类(或对象)的任何实例,而是针对类。看看下面的例子,考虑我们有一个数学类:
public static final double PI = 3.1415926;
public static toRadians(double degs) {
return degs * PI/180;
}
这里,这是不方便的,不切实际的,和荒谬创建一个新的对象,只为了呼唤toRadians,所以这实际上是静态的。现在,我们可以通过这个访问:
Math.toRadians(39.29);
System.out.println(Math.PI);
的方法之外的任何变量必须声明为static在静态环境中使用。这适用于main
方法,并且main
方法内引用或执行的方法之外的任何变量或方法必须是静态的,因为main
是静态的。这里有一个例子:
public static void main(String[] args) {
testMethod();
}
private static testMethod() { //Must be static because it is called in a static method
System.out.println("Hello");
}
结论,那就是声明为static和最终的东西是恒定的,在静态环境中使用或在静态上下文中引用 东西。数学常数(如Pi和e)通常以这种方式定义,因为它们是通过类而不是实例引用的,并且是不变的常量
最终关键字指示不能更改的变量的常量值,而 一个变量被声明为关键字“static”,它被称为“类变量”。所有实例共享相同的变量副本。一个类变量可以直接用类访问,而不需要创建一个实例。 – Vickyexpert
static和final是两个完全不同的关键字 - public static将在类级别声明这个变量(不是实例),并允许你从另一个class as MyClass.KILOGRAMS_PER_POUND' –
check http://stackoverflow.com/questions/15655012/how-final-keyword-works – Junaid