前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >String为什么是不可变的

String为什么是不可变的

作者头像
@依然范特西
发布2022-12-12 15:41:11
5450
发布2022-12-12 15:41:11
举报
文章被收录于专栏:云天的博客

String为什么是不可变的

我们通过查看String源码可以发现 String内部char数组是通过 private final修饰的,表示不可访问 而且String类也通过final修饰表示不可继承

image-20220826200015086
image-20220826200015086

这样做的目的是

保证了String类的线程安全,如果String可以改变,我们通过写一个类继承String 可以篡改数据 保证了hash属性值不会频繁变更,保证了唯一性,这也是HashMap采用String作为key的原因 实现了字符串常量池,在java中创建字符串对象有两种方式

  1. 通过字符串常量创建,这种会在字符串中通过equls方法去判断当前字符串是否存在 存在直接返回,不存在在常量池创建对象
  2. 通过new创建 这样会保证堆和字符串常量中都有该对象,没有就创建该对象,最后返回堆中的对象引用地址值 先判断字符串常量池中有没有创建该对象,如果存在就回去堆内存中判断是否存在该对象,如果不存在创建对象,然后返回
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • String为什么是不可变的
    • 这样做的目的是
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档