Java中的不可变字符串

字符串对象在 Java 中是不可变的。

扫码关注《Java学研大本营》,加入读者群,分享更多精彩

字符串对象在 Java 中是不可变的。不可变只是表示无法更改或更改某些内容。

一旦创建了 String 对象,它的数据和状态都不能被修改,但会创建一个新对象。

Java 使用字符串字面量概念。假设有五个引用变量,都指向同一个东西,“Emma” 如果一个引用变量改变了对象的值,所有的引用变量都会受到影响。因此,Java 中的 String 对象是不可变的。

堆空间的预定义区域称为“字符串池”,是 JVM 构建字符串对象的地方。当我们尝试声明一个新的 String 对象时,JVM 会检查该值是否已经存在于 String 池中。如果新对象已经存在,它会被赋予相同的值。由于此功能,Java 可以使用堆空间。

让我们尝试通过下面给出的示例来理解不变性的概念:

class immutability{
     public static void main(String args[]){
     String s="Emma";
     s.concat(" Raducanu");//concat() method appends the string at the end
     System.out.println(s); //will print Emma because strings are immutable objects
     }
}

下图现在有助于解释它。

在这种情况下,Emma Raducanu 用于创建新对象而不是更改 Emma。出于这个原因,字符串被称为不可变的。

正如您在上图中看到的那样,创建了两个对象,但引用变量仍然指的是“Emma”而不是“Emma Raducanu” 。

但是,如果我们将其显式分配给引用变量,它将引用“Emma Raducanu”对象。

class Testimmutablestring1{
    public static void main(String args[]){
    String s="Emma";
    s=s.concat(" Raducanu");
    System.out.println(s);   //print Emma Raducanu
    }
}

在这种情况下,s指向“Emma Raducanu”。请注意,仍然没有修改 Emma 对象。

由于 String 对象是不可变的,因此我们不必担心跨多个线程共享项目时所需的同步。

参考文章:

https://medium.com/@sewmini.d.gunawardhana/immutable-string-in-java-cee066e91cf8

推荐书单

1.《项目驱动零起点学Java》

购买链接:https://item.jd.com/13607758.html

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

作者是国内知名Java教学者和传播者,一路披荆斩棘,兢兢业业20余年。积累了丰富的“培”“训”经验,也产出了很多优质的教学理论。

Java语言经过数十年的发展,体系逐渐变得庞大而复杂,本书芟繁就简,提炼出了最为重要的知识点,可以让读者轻松上手。本书配套有专栏课程,课程中提供了扩展内容。

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

2.《Java编程讲义》

购买链接:https://item.jd.com/13495830.html

《Java编程讲义》根据目前Java开发领域的实际需求,从初学者角度出发,详细讲解了Java技术的基础知识。

全书共15章,包括Java开发入门,Java语言基础,Java控制结构,数组,面向对象编程,继承和多态,抽象类、接口和内部类,异常处理,Java常用类库,集合与泛型,Lambda表达式,输入-输出流,多线程,JDBC数据库技术,网络编程等内容。内容全面覆盖.1ava开发必备的基础知识点,结合生活化案例展开讲解,程序代码给出了详细的注释,能够使初学者轻松领会Java技术精髓,快速掌握Java开发技能。

《Java编程讲义》适合作为高等院校相关专业的教材及教学参考书,也适合作为Java开发入门者的自学用书,还可供开发人员查阅、参考。

精彩回顾

想要代码干净又整洁?这里有十大原则

通过自学成为开发者的 9 种方法

怎么做一个有产品意识的软件工程师?

扫码关注《Java学研大本营》,加入读者群,分享更多精彩

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值