黑马程序员技术交流社区
标题:
新手求问,System.out.println()里面的问题
[打印本页]
作者:
周俊波
时间:
2014-4-14 17:10
标题:
新手求问,System.out.println()里面的问题
public class test1 {
public static void main(String[] args) {
int x=0,y=1,z=2;
String s = "x,y,z";
System.out.println(s + x + y + z);
System.out.println(x + y + z + s);
}
}
复制代码
第一个输出,是以文本的形式相加“x,y,z012” 第二个输出问什么就是“3x,y,z”呢?
作者:
刘岳林
时间:
2014-4-14 17:16
只有与字符串相加的时候才都转换成字符串,第二次打印的时候前边就是int类型相加,到最后+s的时候才都转换成字符串
作者:
黄晓鑫
时间:
2014-4-14 17:34
算术运算符 +,-,*,/,%,++,--
+):正号,加法,字符串连接符。
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
作者:
陈冬冬
时间:
2014-4-14 17:38
s+x+y+z,因为s是字符串,后面的整数被被强制转换成了字符串,直接与S连接。而x+y+z+s,x,y,z直接相加,变成3,再与字符串连接
作者:
ilvsoft
时间:
2014-4-14 17:40
+是一个左运算符,如果有多个+的时候都是先从左边运算的,那么第一个输出语句第一个s是字符串,这个时候+是个连接运算符,那么后面的x,y,z都会转成字符串连接,输出x,y,z012
第二个最左边是int类型,那么+是算数运算符,所以x+y+z=3,而最后+后面跟的是一个字符串,那么这个+就是一个字符串连接运算符,所以他会把2用字符串的形式和s想连接,所以输出3x,y,z
作者:
NewDemo
时间:
2014-4-14 18:00
运算符的优先级一样的话就是从左往右算吧,因为括号的优先级高,所以先算括号里面的,楼主实验下这个方式System.out.println(x+(y+(z+s)))
作者:
luoyilan222
时间:
2014-4-14 18:28
public static void main(String[] args) {
int x = 0, y = 1, z = 2;
String s = "x,y,z";
System.out.println(s + x + y + z);
// 可以分为以下几步:
// s + x ——> "x,y,z0"; //x会被转化成 "0" 字符串
// "x,y,z" + y ——> x,y,z01"
// x,y,z01" + z ——> x,y,z012"
System.out.println(x + y + z + s);
// 可以分为以下几步:
// x + y ——> 1; //数字相加结果为1
// 1 + z ——> 3
// 3 + z ——> "3" + "x,y,z" ——> "3x,y,z"//数字和字符串相加数字会先被转换为字符串后在相加
}
作者:
tjsyj
时间:
2014-4-14 19:06
代码是按顺序执行,s+x+y+z 是 依次执行 ,先是 S+x 是字符串x,y,z与整数 0相连,变成字符串 x,y,z0 再与Y相连变成 字符串 x,y,z01 再与z相连 变成 x,y,z012
x+y+z+s是 整数 X+Y+Z 整数想加得到 整数结果 3 然后再与字符串相连 变成 3x,y,z。
作者:
耳东君
时间:
2014-4-15 09:58
因为你定义的s是字符串
作者:
Linuxgg
时间:
2014-4-15 10:15
1。运算顺序。+=〉是从左到右。
2。不同数据类型的运算,会自动提升。
例如,String+String =>String, int+int =>int
例子中是int+int+String, 所以,第一步,两个int相加得到int,也就是3,
而下一步就是int+String=>是String. int会提升为String。
作者:
._抬眉﹏
时间:
2014-4-15 20:10
1楼正解,受教了
作者:
彭飞
时间:
2014-4-15 23:42
这个不难理解吧,
在学习运算符的时候,老师给的表中,就有两个+
为什么,因为他们有不同的含义,一个是相加,一个是连接。
第一个输出语句是用s字符串连接后面的和
第二个输出语句是用和连接s字符串
这题吧,说难,其实就是把int类型的 变量名,雷同了,s字符串里的字符。你任意换其中一组,
在走一个试试,你就发现,如此如此。
作者:
宋大龙
时间:
2014-4-16 13:57
你其实没有理解的是字符串相加和运算顺序的概念 ,1举个例子 我们会接触到很多如 int x = 4; System.out.println(“x=”+int x);这样的写法,打印出来就会是 x=4
而你这个题里面 定义了int x=0,y=1,z=2 和String s = "x,y,z" 记住String 定义的是一个字符串就OK 了。
而字符串相加 这个加号代表相连接 所以是x,y,z012
2、先相加之后在连接一个字符串 就是 3x,y,z
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2