一起使用 String 和 int 时的 System.out.println 行为

vik*_*ngh 3 java string int operation

考虑下面的代码片段 -

public class Student {

    public static void main(String args[]) {
        int a = 3;
        int b = 4;
        System.out.println(a + b +" ");
        System.out.println(a + b +" "+ a+b);
        System.out.println(""+ a+b);

    }
}
Run Code Online (Sandbox Code Playgroud)

上述代码片段的输出如下:

7
7 34
34
Run Code Online (Sandbox Code Playgroud)

从输出中可以清楚地看出,如果我们首先在 print 语句中使用 String,那么整数将被连接起来。但是,如果我们首先使用整数,那么这些值将被添加并显示。

有人可以解释一下为什么会出现这种行为吗?

我什至尝试查看 PrintStream 类中 println() 方法的实现,但无法弄清楚。

cнŝ*_*ŝdk 7

实际上,这不是println()实现造成的,这是在Java处理.+Strings

事实上,该操作是从左到右处理的,因此:

  • 如果出现在运算转换string之前(或任何其他类型) ,则所有其余操作数将被视为,并且它仅由串联运算组成intStringstringsString
  • 如果int在操作中首先出现,则将被视为int因此addition使用操作

这就是为什么a + b +" "给出的7原因,因为Stringis 在运算的末尾,而对于其他表达式a + b +" "+ a+b""+ a+b,变量ab将被视为在表达式中strings位于 a 之后。String

有关更多详细信息,您可以查看Java 规范中的字符串连接运算符 +