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

遇到个简单的return返回值问题?真心懵了
public class Test{

public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (100 > 200 ? 100 : 200 + 10);
}
}
输出:210
public class Test{

public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (1 + 100 > 200 ? 100 : 200);
}
}
输出:200
public class Test{

public static void main(String[] args){
System.out.println(go());
}
public static int go(){
return (1 + 100 > 200 ? 100 : 200 + 10);
}
}
输出210

------解决方案--------------------
这是运算符优先级的问题吧
------解决方案--------------------
运算符(优先级从高到低) 结合性 
++(后缀) --(后缀) ( )(调用函数) [] {} (组合文字) . -> 从左到右 
++(前缀) --(前缀) -+~! sizeof * (取值) &(地址) (type) (都是一元运算) 从右到左 
(type name) 从右到左 
* / % 从左到右 
+ -(二者都是二元运算) 从左到右 
<< >> 从左到右 
< > <= >= 从左到右 
== != 从左到右 
& 从左到右 
^ 从左到右 
| 从左到右 
&& 从左到右 
|| 从左到右 
?:(条件表达式) 从右到左 
= *= /= %= += -= <<= >>= &= |= ^= 从右到左 
,(逗号运算符) 从左到右 

------解决方案--------------------
三目运算符 优先级别最低
------解决方案--------------------
操作符的优先级问题,+号优先比较运算符
------解决方案--------------------
这是运算优先级的问题 ,运算的优先级不同
return (100 > 200 ? 100 : 200 + 10); 首先完成 200+10 实际是 100>200?100:210
return (1 + 100 > 200 ? 100 : 200); 首先完成 1+200 实际是 101>200?100:200
return (1 + 100 > 200 ? 100 : 200 + 10); 首先完成 1+100和200+10 实际是 101>200?100:210

三目运算符 运算的结果就是 210 200 210