关于String和StringBuffer和StringBulider

字面值字符串保存在常量池当中,以String对象形式,String和StringBuffer和StringBulider的区别是String类的value数组是final类型,而StringBuffer和StringBulider的value不是final类型。所以String不能更改字符串的值,这里仅仅指改变数组大小,生成新的数组引用,String类不支持只改变数组中的值。String字符串不一定都放在常量池当中,字面值一定放在常量池当中,StringBulider和StringBuffer的字符串一定放在堆中,不在常量池中,因为调用了append函数。
String类的intern()函数表示返回该字字串常量池的引用,若常量池没有该字符串,则创建。
字符串的”+“运算:
字面值相加时,编译器进行语法优化,先将字符串字面值拼接起来,例如String a=”hello"+“world”,优化后是“String a=“helloworld”;
注意:只有在字面值相加时,才会优化,其它情况诸如变量相加或者new String得出的字符串相加都不会产生优化,得出来的数组value值是放在堆当中,数组中的值指向字面值。
StringBuffer和StringBulider相对于String来说更节省内存,String更改字符串需要额外创建一个对象和销毁一个对象。
StringBulider和StringBuffer是两倍加2扩容:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值