Java基础知识强化23:Java中数据类型转换(面试题)

1. 以下代码输出结果是( D )。

                    public  class  Test   {

                                     public  static  void  main(String[]  args) {

                                                       int  a=5;

                                                       System.out.println("values is "+((a < 5) ? 10.9 : 9 ) );

                                       }

                         }

A. 编译错误    B.  10.9    C. 9     D. 以上答案都不对。

解析:如果你不假思索地直接选C,就恰恰中了题目设置的陷阱。注意到((a<5)? 10.9 : 9)里面有一个10.9,而后面直接跟了一个9。

这时候Java就会根据运算符的精度类型进行自动类型转换,由于前面有一个10.9,所以后面的9也会自动变成9.0,因此选择D

Java基础知识强化23:Java中数据类型转换(面试题)

2. 以下代码的输出结果是( A )。

import  java.util.*;

              public  class  Test {

                              public  static  void   main(String[]  args) {

                                              char   x = 'x';

                                               int  i = 10;

                                               System.out.println(false ?  i : x);

                                               System.out.println(false ? 10: x);

                                }

                   }

A. 120 x             B.120 120            C. x 120               D. 以上答案都不对

解析:int i =10;中的i是一个变量,因此,第一个输出x被自动提升为int型了,因为i是int类型,x的int值为120,所以第一个输出为120

至于第2个输出,java编程规范中提到:当后两个表达式有一个是常量表达式(本题中是10)时,另外一个类型是T(本题中是char)时,而常量表达式可以被T表示是(representable in type  T),输出结果是T类型。所以,因为10是常量,可以被char表示。输出结果是char型的。

上一篇:1. dex和Jar反编译对比


下一篇:【原创】qlogic网卡软中断不均衡问题分析