java string改变的影响_JAVA中String类对象不可以改变

一、String类对象内容不可改变

也就是说String类型的字符串的内容--旦声明赋值之后是不可以改变的

DEMO:观察代码

32e86d6a10bf093afa3c9f77161b84ca.png

发现了最后输出的内容是“helloworld!”这与之前的描述不同,其实这里改变的不是原来的字符串的内容,改变的是引用。+344fecd5b91a6de2d550917bdf414e76.png

通过上面的DEMO发现了最初声明的“hello”并没有改变,改变的是引用。还发现了生成许多没有栈内存指向的对象,这样的对象将会等待GC回收!

也说明如果一个String类字符串改变频率较高则会产生大量的垃圾,这样造成内存的耗费从而降低了性能。

所以如果字符串频率改变高的时候我们不使用String类来实现字符串的创建,而是使用“StringBuffer” 或者“StringBuilder”类来创建字符串(但是这两个类我们放到常用类库部分去讲解)

DEMO:观察代码(使用String声明的字符串)

1d9e701378c84275ea0c9178f229d3ad.png

不断的触发GC,说明产生了大量的垃圾对象。

DEMO:观察代码(使用StrinBuilder声明的字符串)

1d96d48cf1738e1aefb2cc57e7011768.png

发现了使用StringBuilder 的时候没有触发GC,说明没有产生垃圾对象。

总结:

1、String 类的字符串对象不可以改变

2、如果一个字符串改变频率太高则会产生大量的垃圾,所以此时我们不使用String类来实现字符串的创建。

bea5e51e4f28da39f4e5fce81bfc4431.png

0a2e5a0965a3c0d6dba9e31d18c7fa39.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值