欢迎光临散文网 会员登陆 & 注册

java 核心技术-12版 卷Ⅰ- 4.4.2 静态常量

2023-08-09 23:37 作者:CC挑灯夜读_谷  | 我要投稿

原文

静态变量使用得比较少,但静态常量却很常用。例如,Math 类中定义了一个静态常量:

public class Math{

    // ....

  public static final double PI = 3.14159265358979323846;

}

在你的程序中,可以用 Math.PI 来访问这个常量。

如果省略关键字 static , 那么PI 就变成了Math 类的一个实例字段。也就是说,需要通过Math 类的一个对象来访问PI ,并且每一个Math 对象都要它自己的一个PI 副本。

另一个你已经多次使用的静态常量是System.out 。 它在System类中声明如下

public class System{

    // ...

public static final PrintStream out = null;

}

前面曾经多次提到过,最好不要有公共字段,因为谁都可以修改公共字段。不过,公共常量(即final 字段)却没问题。因为out 被声明为final ,所以,不允许再将它重新赋值为另一个打印流:

System.out=new PrintStream(..);// ERROR -- out is final

注释:如果查看System类,就会发现有一个setOut方法可以将System.out设置为不同的流。你可能会感到奇怪,为什么这个方法可以修改final 变量的值。原因在于,setOut方法是一个原生方法,而不是在Java语言中实现的。原生方法可以绕过Java语言的访问控制机制。这是一种特殊的解决方法,你自己编写程序时不要模仿这种做法。

java 核心技术-12版 卷Ⅰ- 4.4.2 静态常量的评论 (共 条)

分享到微博请遵守国家法律