当我运行以下代码时:
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",因为括号中的数学优先.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |