帮我解释下,为什么这个会有这个运行结果的区别
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
------解决方案--------------------==优先级比+低。
明白优先级就明白了。