返回顶部
首页 > 资讯 > 精选 >Java中String是不可变的吗
  • 956
分享到

Java中String是不可变的吗

2023-06-27 09:06:55 956人浏览 薄情痞子
摘要

这篇文章主要介绍“Java中String是不可变的吗”,在日常操作中,相信很多人在Java中String是不可变的吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中String是不可变的吗”的疑惑有所

这篇文章主要介绍“Java中String是不可变的吗”,在日常操作中,相信很多人在Java中String是不可变的吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中String是不可变的吗”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

String 为什么不可变

String 类利用了 final 修饰的 char 类型数组去存储字符,源码如下:

private final char value[];

String 为什么不可变

String 类利用了 final 修饰的 char 类型数组去存储字符,源码如下:

private final char value[];

String 真不可变吗

String 不可变但不代表引用不可变

String str = "Hello";str = str + " World";System.out.println("str=" + str);xi

效果:

str=Hello World

解析:String 内容不可变,因为 str 由原来指向 "Hello" 的内存地址转变指向 "Hello World" 的内存地址,所以是多开辟了内存区域给 "Hello World "字符串

通过反射可修改不可变对象

// 创建字符串"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是不可变的吗”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Java中String是不可变的吗

本文链接: https://www.lsjlt.com/news/309099.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中String是不可变的吗
    这篇文章主要介绍“Java中String是不可变的吗”,在日常操作中,相信很多人在Java中String是不可变的吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中String是不可变的吗”的疑惑有所...
    99+
    2023-06-27
  • String的不可变是因为Final 吗
    这篇文章主要讲解了“String的不可变是因为Final 吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“String的不可变是因为Final 吗”吧!St...
    99+
    2024-04-02
  • Java中的String为什么是不可变的
    这篇文章主要介绍“Java中的String为什么是不可变的”,在日常操作中,相信很多人在Java中的String为什么是不可变的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的String为什么是不...
    99+
    2023-06-17
  • 分析Java中为什么String不可变
    目录常量池便利安全引申问题String在Java中的【引用传递】常量池 Java中我们创建String对象有两种基本方法。 String str1 = "zxhtom"; Str...
    99+
    2024-04-02
  • Java中的String对象不可改变的特性有哪些
    Java中的String对象不可改变的特性有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. String对象不可改变的特性下图显示了如下代码运行的过程:...
    99+
    2023-05-31
    java string ava
  • java可变类和不可变类
    java可变类和不可变类a) 可变类获取到这个类的实例后,可以改变这个实例内容,比如改变这个实例的内在成员变量。b) 不可变类获取到类的实例后,不可以改变这个实例的内容,不可变实例一旦创建,其内在成员变量的值便不可再变。不可变类典型的像St...
    99+
    2017-05-07
    java基础 可变类 不可变类 java
  • java String如何被设计成不可变对象
    这篇文章主要介绍“java String如何被设计成不可变对象”,在日常操作中,相信很多人在java String如何被设计成不可变对象问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java String如何...
    99+
    2023-06-19
  • 分析JDK中String的存储区与不可变性
    这篇文章主要介绍“分析JDK中String的存储区与不可变性”,在日常操作中,相信很多人在分析JDK中String的存储区与不可变性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析JDK中String的存储...
    99+
    2023-06-02
  • java如何证明字符串是不可变的
    这篇文章主要介绍了java如何证明字符串是不可变的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何证明字符串是不可变的字符串不可变的这个事我曾写过两篇文章,写到最后我都要吐...
    99+
    2023-06-27
  • php可不可以改变html内容吗
    小编给大家分享一下php可不可以改变html内容吗,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php能改变html内容,其具体实现方法是:首先打开相应的代码文件;然后在HTML代码中添加PHP语句为“”即可。php修改h...
    99+
    2023-06-14
  • 基于String不可变字符与StringBuilder可变字符的效率问题
    String与StringBuilder的效率 ‍1.如果需知要拼接的内容比较道少 不可变,拼接的多会产生多个新的对象,十分的耗费内存空间和程序执行效率 String...
    99+
    2024-04-02
  • php数组中的元素可不可以是变量
    今天小编给大家分享一下php数组中的元素可不可以是变量的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP数组中的元素可以是...
    99+
    2023-07-02
  • java中可变参数是什么
    这期内容当中小编将会给大家带来有关java中可变参数是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其...
    99+
    2023-06-14
  • php数组中的元素可以是变量吗
    PHP数组中的元素可以是变量;数组是一个能在单个变量中存储多个值的特殊变量,其中存储的值可以设置为变量,也可以利用list()语句将数组元素转换成变量,语法为“list(var1,var2...)”。本文操作环境:Windows10系统、P...
    99+
    2022-07-11
    php
  • Python中可变变量与不可变变量详解
    目录一 、常见的变量分类1、变量的创建二、变量分类1、、常见的不可变变量2、常见的可变变量三、拷贝的差别四、参数传递的差别前言: C++不同于Python的显著特点,就是有指针和引用...
    99+
    2024-04-02
  • Python中的可变对象和不可变对象
    什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。 可变对象,该对象所指向的内存中的...
    99+
    2023-01-30
    对象 Python
  • python的可变和不可变数据类型是什么
    这篇文章主要讲解了“python的可变和不可变数据类型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python的可变和不可变数据类型是什么”吧!不可变数据类型python中不可变数据...
    99+
    2023-06-02
  • java static变量可以赋值吗?
    java static变量可以赋值吗?可以赋值的。static的主要作用是静态成员,指该变量的实例在内存中之存放一次。赋值是可以随便改的。java中static关键字static是java中非常重要的一个关键字,主要有两种作用: ● 第一:...
    99+
    2014-07-10
    java教程 java static
  • java中的不可变类及其创建规则
    不可变类顾名思义就是这个类被实例化之后不可被重新赋值,java提供的八个包装类和java.lang.String都是不可变类。创建自定义不可变类需要遵守的规则:使用private和final修饰成员变量。提供带参构造方法,用于初始化成员变量...
    99+
    2020-12-14
    java 不可变类 创建 规则
  • c++中log函数的底数可以是变量吗
    c++ 中的 log 函数底数可否使用变量?是。logb 函数可用于计算以指定底数为基数的对数,例如 logb(100, 10) 计算以 10 为底的 100 的对数,结果为 2。 C...
    99+
    2024-05-14
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作