java - StringBuffer转成String,可以不同过tostring,而是通过+“”的方式转换吗?

查看:108
本文介绍了java - StringBuffer转成String,可以不同过tostring,而是通过+“”的方式转换吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

通过+方式转换更简单,为什么都用tostring方法呢?

StringBuffer sb = new StringBuffer();
        sb.append(123);
        
        String s=sb+"";

解决方案

sb本质是一个StringBuffer对象,直接sb+""就是在调用了sb.toString()去和""进行拼接,另外补充一点,StringBuffer是线程安全的,为什么要使用StringBuilder或者StringBuffer呢?原因是String类在Jdk里边,是final类型的,但是为什么final修饰的还可以String str = s + "";这种形式存在呢?因为在jvm里边,每次执行+的时候,都会创建一个临时的String对象,然后你看到的String str = a + b;实际上是String str = new String(a) + new String(b);的形式,这样如果要拼接的字符串多了,就会创建出很多String对象,因此,造成gc的开销增大,所以这种频繁的操作不直接用字符串拼接,而是用StringBuilder或者StringBuffer来取代。

这篇关于java - StringBuffer转成String,可以不同过tostring,而是通过+“”的方式转换吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆