日期:2014-05-20  浏览次数:20629 次

帮我解释下,为什么这个会有这个运行结果的区别
rt;
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:"+str==null?"null":str.length());
结果:0
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:"+(str==null?"null":str.length()));
结果:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:0
jdk:1.5.0_15

------解决方案--------------------
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:"+str==null?"null":str.length()); 
这里+号运算符是操作级别最高的,所以先执行+
("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:"+str == null 
显然是不等于null, 所以输出str.length()

------解决方案--------------------
计算优先级的问题,括号计算优先级高
------解决方案--------------------
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@str:"+str = a new String

------解决方案--------------------
==优先级比+低。
明白优先级就明白了。