StringBuffer和StringBuilder

在Java中字符串是不可变的,每一次拼接都会产生新字符串,这会导致占用大量的方法区内存,造成内存空间的浪费。

String s = "";
for(int i=0;i<100;i++){
    s += i;          
}

以上例子会让java方法区字符串常量池带来很大的压力。如果要进行大量字符串拼接操作,可以使用StringBuilder和StringBuffer。

StringBuilder

StringBuilder是一个可变的字符串类,可以把它看成是一个容器,可变指的是StringBuilder对象中的内容可变的。

复制代码
//构造方法,创建一个初始化容量为16byte[](字符串缓冲区对象)
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder("xxx");
//添加数据,并返回对象本身 public StringBuilder append(任意类型)
//返回相反的字符序列 public StringBuilder reverse()
复制代码

 如果String类型想要使用append或者reverse方法必须要转化成StringBuilder

//StringBuilder转化为String
public String toString()
//String转化为StringBuilder public StringBuilder(String s)

 StringBuffer和StringBuilder基本类似,区别在于StringBuffer中的方法都有synchronized关键字修饰,表示StringBuffer在多线程环境下运行是安全的;而StringBuilder中的方法中没有,所以是非线程安全。

 

posted on   一个坐在电脑前的水獭  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示