首页 > Java > java教程 > 为什么在Java中String类是不可变的或者是final的?

为什么在Java中String类是不可变的或者是final的?

WBOY
发布: 2023-08-20 22:05:09
转载
1039 人浏览过

为什么在Java中String类是不可变的或者是final的?

字符串是不可变的意味着我们无法更改对象本身,但我们可以更改对象的引用。该字符串被设置为最终字符串,不允许其他人扩展它并破坏其不变性。

  • 安全参数通常在网络连接、数据库连接 URL、用户名/密码等中表示为字符串。如果它是可变的,则这些参数可以轻松更改。
  • 同步和并发自动使 String 不可变使它们线程安全,从而解决同步问题。
  • 缓存当编译器优化我们的 String 对象时,似乎如果两个对象具有相同的值(a =" test", b =" test"),因此我们只需要一个字符串对象(对于 a 和 b,这两个对象将指向同一个对象)。
  • 类加载 String 用作类的参数加载中。如果可变,可能会导致加载错误的类(因为可变对象会改变其状态)。

示例:

public class StringImmutableDemo {
   public static void main(String[] args) {
      String st1 = "Tutorials";
      String st2 = "Point";
      System.out.println("The hascode of st1 = " + st1.hashCode());
      System.out.println("The hascode of st2 = " + st2.hashCode());
      st1 = st1 + st2;
      System.out.println("The Hashcode after st1 is changed : "+ st1.hashCode());
   }
}
登录后复制

输出:

The hascode of st1 = -594386763
The hascode of st2 = 77292912
The Hashcode after st1 is changed : 962735579
登录后复制

以上是为什么在Java中String类是不可变的或者是final的?的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板