我想知道如果字符串的值包含一个对象会调用什么函数?
例如:
\K
它也像public class A {}
A a;
String str = "Hello" + a;
一样调用String.valueOf(Object)
吗?
答案 0 :(得分:3)
请参见jls 15.18.1. String Concatenation Operator +:
如果只有一个操作数表达式的类型为String,则为string 对另一个操作数执行转换(第5.1.11节)以产生一个 运行时输入字符串。
和jls 5.1.11. String Conversion:
如果引用为null,则将其转换为字符串“ null”(四个 ASCII字符n,u,l,l)。
否则,转换就好像是通过调用 所引用对象的 toString 方法,不带参数;但是如果 调用toString方法的结果为null,然后字符串“ null” 代替。
toString方法由原始类Object定义 (第4.3.2节)。许多类都会覆盖它,特别是布尔值,字符, 整数,长整型,浮点型,双精度和字符串。