小白提问 初级有关问题

小白提问 初级有关问题

小白提问 初级问题
本帖最后由 leet2 于 2015-11-14 21:48:11 编辑

public class test1114 {
public static void main(String[] args){
System.out.println("5+5="+5+5);//5+5=55  这里我看不懂啊     因为这里多了个加号所以系统认为这2个5是字符串?
System.out.println(5+5+"=5+5");// 这里有疑问  为什么答案是 10=5+5 为什么不是55=5+5?  +号不是连接字符串的符号吗 怎么会让他们相加    因为比上面少了个加号?
}
}

------解决思路----------------------
依次运算啊,然后把结果返回打印
按照结合律,"5+5="+5+5从左往右,5+5是字符串,遇到int,int转为string,再遇到int,再转为string
而5+5+"=5+5",先是int,所以不会被提升什么的,遇到+5,还是int,变为10,10遇到string,被提升为string,变成字符串的10,后面的不多说
要想改变第一个输出,就得改变优先级"5+5="+(5+5)这样就OK了
------解决思路----------------------
http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html(运算符优先级)

还有当字符串String与基本类型相加的时候,基本类型默认会自动转换成字符串