首页 > 解决方案 > 如果将字符串的值设置为包含对象的表达式会发生什么?

问题描述

我想知道如果字符串的值包含对象,会调用哪些函数?

例如:

public class A {}

 A a;
 String str = "Hello" + a;

它也String.valueOf(Object)按原样调用System.out.println()吗?

标签: javastring

解决方案


参见jls 15.18.1。字符串连接运算符 +

如果只有一个操作数表达式是字符串类型,则对另一个操作数执行字符串转换(第 5.1.11 节)以在运行时生成字符串。

jls 5.1.11。字符串转换

如果引用为 null,则将其转换为字符串“null”(四个 ASCII 字符 n、u、l、l)。

否则,转换就像调用被引用对象的 toString方法一样执行,不带参数;但如果调用 toString 方法的结果为 null,则使用字符串“null”。

toString 方法由原始类 Object(第 4.3.2 节)定义。许多类会覆盖它,特别是 Boolean、Character、Integer、Long、Float、Double 和 String。


推荐阅读