网站首页 > 精选教程 正文
开发人员不使用 Java 中的 const 关键字将字段标记为常量。相反,他们将 Java 中的关键字 static final 以菊花链式连接,以创建一个可以说是具有不可更改值的全局变量。
虽然 const 字在 Java 中是保留的,但它没有实现,任何在代码中使用它的尝试都会触发编译时错误。从其他语言转向 Java 的开发人员会发现在 Java 中使用术语 static final 而不是 const 关键字是不直观的。但是,以这种方式实现语言有一个面向对象的编程原因。
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 关键字的需要。
猜你喜欢
- 2024-10-30 java 你用了这么久,真的明白static和final的区别么?
- 2024-10-30 JAVA笔记(十五)面向对象——关键字abstract、final
- 2024-10-30 「java面试_01」String类为什么是final
- 2024-10-30 Java编程思想:final 关键字 java中finally关键字
- 2024-10-30 Java八股文:final、finally、finalize之间有什么区别
- 2024-10-30 在java中String类为什么要设计成final?Java面试常见问题
- 2024-10-30 lambda中的外部局部变量为什么需要声明final?
- 2024-10-30 java笔记static和final用法 java static与final
- 2024-10-30 Java中为什么String类被定义成final
- 2024-10-30 Java中的final修饰符 java中final可以修饰接口吗
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)