Java中String是不可变的吗
发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,这篇文章主要介绍"Java中String是不可变的吗",在日常操作中,相信很多人在Java中String是不可变的吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Jav
千家信息网最后更新 2024年12月02日Java中String是不可变的吗
这篇文章主要介绍"Java中String是不可变的吗",在日常操作中,相信很多人在Java中String是不可变的吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java中String是不可变的吗"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
String 为什么不可变
String 类利用了 final 修饰的 char 类型数组去存储字符,源码如下:
/** The value is used for character storage. */private final char value[];
String 为什么不可变
String 类利用了 final 修饰的 char 类型数组去存储字符,源码如下:
/** The value is used for character storage. */private final char value[];
String 真不可变吗
1、String 不可变但不代表引用不可变
String str = "Hello";str = str + " World";System.out.println("str=" + str);xi
效果:
str=Hello World
解析:String 内容不可变,因为 str 由原来指向 "Hello" 的内存地址转变指向 "Hello World" 的内存地址,所以是多开辟了内存区域给 "Hello World "字符串。
2、通过反射可修改不可变对象
// 创建字符串"Hello World", 并赋给引用sString s = "Hello World";System.out.println("s = " + s); // Hello World// 获取String类中的value字段Field valueFieldOfString = String.class.getDeclaredField("value");// 改变value属性的访问权限valueFieldOfString.setAccessible(true);// 获取s对象上的value属性的值char[] value = (char[]) valueFieldOfString.get(s);// 改变value所引用的数组中的第5个字符value[5] = '_';System.out.println("s = " + s); // Hello_World
效果:
s = Hello Worlds = Hello_World
解析:
用反射访问私有成员,再反射出对象的 value 属性,再改变 value 引用改变数组结构。
到此,关于"Java中String是不可变的吗"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
可变
字符
数组
学习
内存
对象
属性
反射
地址
字符串
指向
效果
更多
源码
类型
存储
帮助
实用
接下来
代表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
陀螺世界无法连接到服务器
托管服务器适合什么企业
二是网络安全是
免费vpn服务器地址
服务器2008进安全模式
sql数据库安全认证
上海航空工业集团软件开发
如何用电脑访问公司的服务器
软件开发是一个把用户需求
连接数据库预编译的方式
未来网络安全股票龙头
认证服务器失败
卖论文数据库的怎么卖的
python数据库开发培训
宝塔重装数据库会在哪
数据库宕机解决方案
阿里数据库数据库
微米网络技术服务
什么是数据库dba权限
成都地图json数据库
传奇世界二区服务器
普陀区工商软件开发诚信服务
杭州麒能网络技术有限公司
电信网络安全等级
网络安全神童 马云
郑州网络技术基础课程试卷
济南企业软件开发流程
气质质谱数据库
江西服务器设备回收多少钱
为什么争霸艾泽拉斯没有数据库