为什么StringBuilder要转换成String再输出

如题,楼主才学,有点没搞明白。
直接对StringBuilder进行system.out.println(),可以正常输出,为什么还要进行toString();
另外,StringBuilder和String是啥关系啊?
求各位指导

img

不将StringBuilder转换成String,也会默认输出String数值;
原因在于system.out.println()这句话中默认是输出填入对象的toString()方法的
比如system.out.println(A),其实是system.out.println(A.toString()),你可以自己写一个类,然后重写toSting方法试一下就知道了。
StringBuilder和String是没啥关系,是两个单独的类型。
String是字符串常量,每次操作都会产生一个新的对象,
StringBuilder是字符串变量,对该对象字符串进行操作,一直是一个对象,是可变的量。
这么说来其实也有关系,都是字符串,哈哈,但其实底层实现不同

都要实现 CharSequence接口,都是对字符进行操作,只是操作对象不一样

1、String:

String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则纹丝未动。
String字符串不可变,线程安全,开销大,垃圾产生多
2、StringBuffer

StringBuffer每一个修改方法,实际都是在操作StringBuffer初始化时所创建的对象
StringBuffer字符串可变,线程安全,开销大
3、StringBuilder

StringBuilder每一个修改方法,实际都是在操作StringBuilder初始化时所创建的对象
StringBuilder字符串可变,非线程安全,开销小。