为什么我们声明常量,是否有必要使它们成为静态?

use*_*693 2 java static final constants

我知道常量是那些值无法改变的变量,但是如果程序的任何部分没有改变它们的值,它们是否仍然需要被声明final?它似乎也必须是静态的.这是为什么?

Seb*_*anH 6

你实际上是在问我想要回答的几个问题.

为什么要使用常量?

常量用于避免代码中的幻数/字符串.如果您的代码中有多个字符串出现,那么一旦您需要更改该字符串,您只需要更改常量定义,而不是更改代码中每次出现的字符串.此外,如果只使用一个常数,它通常是一件好事,因为它具有更好的可见性.

final关键字.

它的目的(至少在这种情况下)是双重的.一个是让程序员无法改变价值.你可能已经忘记它是一个常数.另一种是告诉编译器该值在运行时不能更改.这可用于创建优化的字节码(例如,可以删除常量,并且编译器将每次出现的值替换为其值).

static关键字.

在Java中,一切都是类.每个Class都可以有多个实例(对象).如果你没有标记你的常数,static那么每个对象都有"它自己的常数".既然你不想要将它标记为静态是有意义的.静态字段(或方法)每个类只存在一次(而不是每个类的对象一次).