什么TM的叫String不可变序列???

本文深入探讨Java中String类的不可变性概念,解释为何String对象在初始化后不会改变,以及这种特性如何影响字符串操作的效率。通过实例演示,理解String不可变性的实际应用及其对内存管理和性能优化的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、String是一个final类,代表不可变序列

2、我在想什么叫不可变

 

比如下列程序

看到输出不同结果我单纯的想这不是变了吗,那么String不可变指的是什么?

   直到了解到下列内容

    String一经初始化后,就不会再改变其内容了。

   对String字符串的操作实际上是对其副本(原始拷贝)的操作

     原来的字符串一点都没有改变。比如:

     String s ="a"; 创建了一个字符串

      s = s+"b"; 实际上原来的"a"字符串对象已经丢弃了,现在又产生了另一个字符串s+"b"(也就是"ab")。

      如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。

     如果这样的操作放到循环中,会极大影响程序的时间和空间性能,甚至会造成服务器的崩溃。

      我想如何用程序来证明这个呢?即原先创建的对象已经丢弃了,

     于是如上的程序我将   s改为 147  在新创建一个String对象为ll值也为 147,如果s原先的对象没有丢弃,那么根据java语法

     s==ll 返回值为false,如果返回值为true那么就证明原先的String对象已经丢弃了。如上。。。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值