public class Test { public static void main(String[] args) { int x = 5; int y = 2; int a=5,b=4,c=3; System.out.println(x+y+"K"); System.out.println("abc"+a+b+c+3); }}结果是:7Kabc5433这是为什么???????
首先,这个跟println输出规则没什么关系这个是跟运算规则和“+”连接符有关其次x,y,a,b,c都是int型,也就是可用“+”号计算的类型最后第一个输出x+y+"K"从左到右先计算x+y,结果为7是int类型,这里的"+"号是计算符号,而后“+”号是当字符串连接符号处理所以最后int的7和string类型的“K”连接后生成新的string,“7K”第二个输出“abc”+a+b+c+3也是从左到右计算,因为“abc”是字符串,而后跟“+”号是当字符串连接符号处理,所以是“abc5433”其后的“+”号都当成了字符串连接符号总之,当“+”号前后有字符串出现时,就当做字符串连接符号处理了。例如:int a=1;String s="a";System.out.println(a+s);输出"1a"System.out.println(s+a);输出“a1”而且这种情况就从左到右,依次看“+”号前后有没有字符串出现就行了。
System.out.println("abc"+a+b+c+3); 在java中基本类型的值加上一个字符串后会自动转换为字符串,如1+“1” 最后会是“11”,如果你要输出想要的可以写成这样System.out.println("abc"+(a+b+c+3));或System.out.println(a+b+c+3+"abc");(就像你第一个println一样),仅供参考。。。
优先级一样从左开始,前面2个int型相加,自然是5+2等于7,然后数字与字符串相加,就不是加法,而是串成一个字符串变成7k,后面同理,在优先级一样的情况下,从左开始,字符串与数字串成新的字符串,输出是abc5433