程序一:

 
  1. public class T { 
  2.   public static void main(String[] args) { 
  3.     char x = 'X'
  4.     int i = 10
  5.     System.out.println(true ? x : 0); 
  6.     System.out.println(false ? i : x); 
  7.   } 

输出结果为: X 88 程序二: 

 
  1. public class T { 
  2.   public static void main(String[] args) { 
  3.     char x = 'X'
  4.     int i = 10
  5.     System.out.println(true ? x : 0); 
  6.     System.out.println(false ? 10 : x); 
  7.   } 
  8. }

输出结果为: X X 请问为什么会这样? false ? i : x 和 false ? 10 : x 有什么不一样的? 这道题是在百度贴吧java吧里面看到的,刚看到自己也晕了,压根就从来没想过这种问题,看看楼下帮忙解答的人的说法,有个分析的挺不错的,觉得他说的应该是对的。分析如下: System.out.println(false ? i : x); // i是int(明确),x就转换成int的类型,输出88 System.out.println(false ? 10 : x); // 10其实是一个char的范围之内,所以x按照char输出'X' System.out.println(false ? 0 : x); // x按照char输出'X' char的有效范围0 - 65535 System.out.println(false ? 65535 : x); // x按照char输出'X' char的有效范围0 - 65535 System.out.println(false ? -1: x); // -1,不在char有效范围只能,x按照转换成int输出

 

 » 除非另有声明,本站文章均为原创。
 » 转载原创文章请以链接形式注明:
 » 转载自:[Neeke] » [一道值得学习学习的问题]
 » 本文链接地址: http://www.ineeke.com/archives/490/
 » 如果喜欢可以:点此邮件订阅或者点此阅读器订阅