哪个最好在我们的应用程序中使用静态最终变量或最终变量

时间:2015-07-16 05:43:41

标签: java

self.userSearch = response.mapItems.placemark

变量之间的主要区别' PI'和' E'我们可以访问PI'通过 类名和对象以及' E'只能通过对象访问

这两者都是不变的,我们不会改变它们的价值。

我已经完成了马德里卡洛斯三世大学的java课程 大学并观看了Mehran Sahami的Stanfort大学视频

这两个人都建议使用关键字static和final。

我的问题是,如果我们只是通过声明public class FinalClassVariable { public static void main(String[] args) { ClassVariable classVariable = new ClassVariable(); System.out.println("Value of PI accessed thorugh class itself = "+ClassVariable.PI); //System.out.println(ClassVariable.E); System.out.println("Value of PI accessed thorugh object = "+classVariable.PI); System.out.println("The value of constant E = " + classVariable.E); } } class ClassVariable { public static final double PI = 3.14; public final double E = 2.7182818284590452353602874713527; } 来创建常量 那么为什么我们必须声明它final呢? static也会影响OOP的概念。

这两个声明之间是否有任何细微差别?哪一个最适合我们的应用程序?

2 个答案:

答案 0 :(得分:4)

如果使用非静态成员声明常量,则类的每个实例都有自己的副本,这很浪费,因为它是常量,并且所有副本都具有相同的值。因此static final更有意义 - 只有这个常量的一个副本。对于PI和E等常量,应始终使用static final

如果该成员的值初始化一次(通常在构造函数中),则最终实例成员(即非静态)是有意义的,但对于该类的不同实例可能不同。

答案 1 :(得分:1)

static成员由类的所有实例共享,其中每次创建实例时都会创建一次非静态成员。

为什么你会为每个实例创建不同的常量值?它毫无意义的权利..

因此,static final是选择。