为什么添加String和int这样做?

Tom*_*Xue -1 java

当我运行以下代码时:

public class LianXi1 
{ 
   public static void main(String args[]) 
   { 
     int a=12; 
     int b=23; 
     System.out.println("case 1"+a); //

     System.out.println("case 2"+b); //

   } 
} 
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

@ubuntu:~/mycode/test$ java LianXi1 
case 112
case 223
Run Code Online (Sandbox Code Playgroud)

但我不明白结果,谁可以帮忙?

Nic*_*ick 14

当您将字符串和整数一起添加时,它会执行"字符串连接",它将整数转换为字符串并将其粘贴到另一个字符串的末尾.

"Case 1" + 12 
Run Code Online (Sandbox Code Playgroud)

... 是相同的

"Case 1" + "12"
Run Code Online (Sandbox Code Playgroud)

所以你的结果将是第一个字符串12后面的字符卡住了.

从而: Case 112

从关于字符串的Java文档:

"Java语言为字符串连接运算符(+)提供了特殊支持,并为其他对象转换为字符串.字符串连接是通过StringBuffer类及其append方法实现的.字符串转换是通过方法toString实现的,由Object定义并且由Java中的所有类继承.有关字符串连接和转换的其他信息,请参阅Gosling,Joy和Steele,Java语言规范."

不过要小心!从左到右添加作品,那么下面会有什么打印?

System.out.println(1 + 2 + "test" + 3 + 4);
Run Code Online (Sandbox Code Playgroud)

首先,它确实1 + 2等于3.

然后它3(最后一步的结果)+ "test",这导致"3test"

接下来,确实如此"3test" + 3,结果是"3test3".

最后,"3test3 + 4"3test34.

正如您所看到的,最好将括号放在周围,以确保它们按照您想要的顺序出现.

(1 + 2) + "test" + (3 + 4) 将是"3test7",因为括号中的数学优先.