程序一:
- public class T {
- public static void main(String[] args) {
- char x = 'X';
- int i = 10;
- System.out.println(true ? x : 0);
- System.out.println(false ? i : x);
- }
- }
输出结果为: X 88 程序二:
- public class T {
- public static void main(String[] args) {
- char x = 'X';
- int i = 10;
- System.out.println(true ? x : 0);
- System.out.println(false ? 10 : x);
- }
- }
输出结果为: 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/
» 如果喜欢可以:点此邮件订阅或者点此阅读器订阅