在Java中字符串的内容可以部分改变吗

 我来答
微言校园故事
2019-11-24 · TA获得超过3950个赞
知道大有可为答主
回答量:3089
采纳率:31%
帮助的人:402万
展开全部
确实,java中的string类型确实是不允许改变其内容的,string类型的对象一旦建立,将在堆内存当中占据一个固定的内存空间,string类型的对象无法改变。
但是你在运算的时候又拆祥发现,你定义的string类型的s变量又是可以进行连接的,如"abc"+"def"最终得到的s的值是"abcdef",这似乎看着string类型的对象又是可以改变的,这是自相矛盾吗?
其实,string对象不允许改变内容是正确的,但是可以改变定义的string类型的变量旅返搏指向,你定义的string
s其实是一个指世磨向string对象的指针,如果不存在对象就为null。
如果你定义了:
string
s="abc";
那么将创建一个内容为"abc"的string对象,并且s指向这个对象。
一旦s=s+123+new
date()这样的操作,那么将创建一个新的string对象来存放新的内容,原先的对象依旧在内存中,但是s不在指向它,那么这个对象就会成为垃圾内存,在某一个特定的时刻有java虚拟机回收。
如果希望存放的string可以调整大小,而不是创建新的内存来存放新的对象,可以使用stringbuffer这个类来存放。这个内存可以调整大小。而不会抛弃。
彭饮通梓莹
2019-01-10 · TA获得超过3683个赞
知道大有可为答主
回答量:3051
采纳率:33%
帮助的人:458万
展开全部
假如字符串的内容要经常改变的话用StringBuffer
类。否则用String类就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式