Java|为什么我们在 Java 中使用 static final 作为常量

Java|为什么我们在 Java 中使用 static final 作为常量

开发人员不使用 Java 中的 const 关键字将字段标记为常量 。 相反 , 他们将 Java 中的关键字 static final 以菊花链式连接 , 以创建一个可以说是具有不可更改值的全局变量 。
虽然 const 字在 Java 中是保留的 , 但它没有实现 , 任何在代码中使用它的尝试都会触发编译时错误 。 从其他语言转向 Java 的开发人员会发现在 Java 中使用术语 static final 而不是 const 关键字是不直观的 。 但是 , 以这种方式实现语言有一个面向对象的编程原因 。
【Java|为什么我们在 Java 中使用 static final 作为常量】Java中static和final的区别
开发人员创建 Java 类 , 例如 Person 类或 BankAccount 类 , 他们从中创建实例 。 可以这样想 , 一个类就像一个饼干切割器 , 而一个单独的实例就像一个饼干 。
如果开发人员希望某个字段在被赋值后永远不会更改 , 则将该字段标记为最终字段 。 例如 , 我的银行帐号创建后永远不会更改 , 你的也不会更改 。 显然 , 你的银行帐号与我的不同 , 因此对于 BankAccount 类的每个实例 , 它们都不相同 。 但是对于每个单独的实例 , 帐户 ID 永远不会改变 。
因此 , 将帐户 ID 称为常量会有些不准确 , 因为它会从一个帐户更改为另一个帐户 。 但是 , 对于任何个人帐户都是如此 。 使用常量这个词——或者Java 关键字const——来描述这个领域在哲学上是不合理的 。

 Java 的 static 与 final 关键字
现在让我们看一下 Java 关键字 static 。 标记为静态的字段对于类的每个实例都是相同的 。 例如 , 银行账户可能有一个代表利率的静态变量 。 当利率发生变化时 , 每个银行账户实例都会发生变化 。 如果明天利率从 1% 降到 2% , 就会影响到每个人 。 它就像一个全局变量 , 类的每个实例都可以访问 。 但是静态变量不是恒定的 , 因为它可以随时更改 。
现在假设开发人员想要一个无法更改的值 , 并且对于类的每个实例都是相同的 。 开发人员需要结合关键字 static final 在 Java 中实现此目的 。 static 关键字意味着类的每个实例的值都是相同的 。 final 关键字意味着一旦为变量分配了一个值 , 它就永远无法更改 。 Java中static final的结合是如何创建一个常量值的 。
不需要 Java const 实现
Java 中的术语 static 和 final 具有不同的含义 。 final 关键字意味着无法更改某些内容 。 static 关键字意味着类级别的范围 。 当你在 Java 中组合 static final 时 , 你创建了一个对类来说是全局的且无法更改的变量 。 其他平台的开发人员会认为这种创建等同于全局常量变量 。 一起使用的静态 final 关键字消除了实现 Java 的 const 关键字的需要 。