Java中i +"abc"的类型

Roa*_*oam 2 java string stringbuilder

我在调用

sb.append(i+"\n");
Run Code Online (Sandbox Code Playgroud)

哪里

StringBuilder sb= new StringBuilder();
int i. 
Run Code Online (Sandbox Code Playgroud)

什么是i +"\n"转换到这里 - 一个String,一个StringBuffer,CharSequence,字符数组,......?

StringBuilderappend()每个接受一个param,它是一个Object,一个String,一个StringBuilder(这个是私有方法),一个StringBuffer,一个CharSequence参数,一个字符数组,...等等.我试图找出哪些被调用 - 希望避免调用String参数进行快速处理.

提前致谢.

Sot*_*lis 8

每当操作符+应用于String任何其他类型的变量和变量时,您就具有String连接.价值i + "\n"是一个String.

Java语言规范涵盖了这

如果只有一个操作数表达式是String类型,则对另一个操作数执行字符串转换(第5.1.11节)以在运行时生成字符串.字符串连接的结果是对String对象的引用,该对象是两个操作数字符串的串联.左侧操作数的字符位于新创建的字符串中右侧操作数的字符之前.

因此,append()被调用的方法是接受String参数的方法.

作为@scottb注释,Java首先将String串联中涉及的对象转换为String对象.这在String转换的JLS章节中有所描述.基元未包装到其包装类型中.如果引用不是null,则toString()在引用的对象上调用该方法.如果引用是null,则String "null"使用.