当我运行以下代码时:
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); //
}
}
我得到了这个结果:
@ubuntu:~/mycode/test$ java LianXi1
case 112
case 223
但是我不明白结果,谁可以帮忙?
答案 0 :(得分:14)
当你一起添加一个字符串和一个整数时,它会执行“字符串连接”,它将整数转换为一个字符串并将其粘贴在另一个字符串的末尾。
"Case 1" + 12
...与
相同"Case 1" + "12"
所以你的结果将是第一个字符串12
后面的字符串。
因此:Case 112
来自字符串的Java文档:
“Java语言为字符串提供特殊支持 连接运算符(+),以及将其他对象转换为 字符串。字符串连接是通过StringBuffer实现的 类及其追加方法。字符串转换已实现 通过方法toString,由Object定义并继承所有 Java中的类。有关字符串连接的其他信息 和转换,请参阅Gosling,Joy和Steele,Java语言 说明书中,“
但要小心!从左到右添加作品,那么下面会有什么打印?
System.out.println(1 + 2 + "test" + 3 + 4);
首先,它1 + 2
,等于3
。
然后它3
(最后一步的结果)+ "test"
,导致"3test"
接下来,它会"3test" + 3
,结果为"3test3"
。
最后,"3test3 + 4
是"3test34
。
正如您所看到的,最好将括号放在一边,以确保它们按照您想要的顺序出现。
(1 + 2) + "test" + (3 + 4)
将是“3test7”,因为括号中的数学优先。
答案 1 :(得分:2)
当在字符串和int之间执行连接操作,或者在字符串和任何其他原始数据类型(如float,long,short等)之间执行连接操作时,该原语始终转换为要附加在原始字符串上的字符串。您的输出显示字符串以及变量a和b的字符串表示。
请参阅:http://www.java-samples.com/showtutorial.php?tutorialid=217
答案 2 :(得分:1)
如果使用'+'运算符隐含函数调用,如“toString()”
更改您的类型int =>然后整数尝试这个。
public class Main {
public static void main(String args[]) {
Integer a=12;
Integer b=23;
System.out.println("case 1" + a.toString()); //
System.out.println("case 2" + b.toString()); //
}
}
因为
"case 1" + a => "case 1" + a.toString(); => "case 1" + "12";
像其他类型一样
this + a => this.toString() + a.toString()
祝你好运!
答案 3 :(得分:0)
对"添加"意味着什么?一个字符串和一个int?在Java中,必须在运算符的两侧具有相同的类型才能执行所需的操作。在许多情况下,当存在不匹配时,Java会将一个值转换为与另一个值相同的类型。在这种情况下,int被转换为String,因为通常很难将String转换为int。现在+运算符"连接"两个字符串"案例1"和" 12"在第一次println()调用中。 "串联"只是意味着将两个字符串连接成一个字符串,在这种情况下创建字符串" case112"你看到输出。
答案 4 :(得分:0)
它是java中的默认值。如果你执行“string”+“int”,java将首先将整数转换为字符串,然后连接字符串和“int”字符串。 所以在你的情况下: “情况1”与字符串值“12”连接,结果为“情况112”。同样是“案例223”。 如果你想让它做加法操作。你应该这样做 System.out.println(“case”+(1 + a)); 然后输出将是: 案例13
答案 5 :(得分:0)
答案 6 :(得分:-2)
当你打印一个整数时,除了字符串之外,它就像一个字符串。但是,如果你这样做了:
System.out.println(1+1);
它会打印2.这是因为整数紧挨着另一个。
如果你这样做了:
System.out.println("Test"+1+1);
它会打印Test2。因为,你首先看一下数字的加法。希望我帮忙。