请问Java中用""+一个变量就能变为字符串了吗,为什么?

比如我有一个StringBuilder s;
然后如果我在throw new RuntimeException(s);
这样写就会报错,要我把StringBuilder变为String.
但是如果我写成throw new RuntimeException(""+s);就又可以了 这是为什么啊?

+号两边如果是基本数据类型类型,例如int,short等,是算数加法,如果两边有一个是字符串,那么就是字符串拼接,你的StringBuilder只是可变字符串,相当于一个字符缓冲区,并不是字符串,可以.toString变成字符串。

"”表示字符串,字符串的+,后面的变量默认字符串

需要+后面的变量支持转化为字符串,比如基本数据类型,或者是定义了toString方法的类

就比如一个int类型+一个double类型,结果返回一个double类型