java中关于printlin的经典问题.请问为什么

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:42:14
System.out.printlin(1+2+"w");
System.out.printlin("w"+1+2);
输出结果分别为
3w
w12
请问为什么
那第二个答案的话,1和2为什么没有双引号呢?

+运算符从左连接的,即按照从左到右的顺序计算。
1+2+"w": 先计算1+2 = 3,然后3与"w"连接得字符串"3w"
"w"+1+2:先将"w"和1连接得字符串"w1",然后再与2连接得"w12"

第二个中,"w"+1得到的结果已经是一个String了,既"w"+1 = "w1",再加2既"w1"+2 = "w12"

建议楼主理解一下运算符重载。

第2个:"w"+1+2
首先从左到右,字符串和整形相加,也就是"w"+1,结果是字符串,"w1"
然后在和2相加,又变成了字符串。

如果这样 "w"+(1+2)

因为(),所以1和2相加 ,字符"w"和3相加。
结果为w3.

1+2+"w"
这个先运算1+2,等于3了,再连接后面的字符w,所以是3w
"w"+1+2
这个先是字符w连接1,然后连接2,所以是w12

我觉得这是正确的。楼主注意是println不是printlin

1+2+"w"
这个先运算1+2,等于3了,再连接后面的字符w,所以是3w
"w"+1+2
这个先是字符w连接1,然后连接2,所以是w12

+号在java里有两种解释,一种是相加,在一种就是字符串连接,从左往右进行运算的,第一个为相加,第二个则是连接符号,答案就不得而知了~~

java中表达式a+b+c+...中,如果碰到一个a为字符串,则后面的+号是作为一种字符串连接操作符处理的,不论b,c是什么类型都一率当成字符串处理,所以第二个是w12。第一个是3w是因为程序先执行了算术运算1+2得出3后才