Java基础知识强化23:Java中数据类型转换(面试题)
2015-09-17 20:46
706 查看
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
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型的。
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
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型的。
相关文章推荐
- 多线程篇 概念混淆面试常考问题
- PHP程序员的技术成长规划
- 跳槽季:分享从事C#开发人员面试经验
- 漫谈程序员(六)公司项目开发感悟
- 漫谈程序员(六)公司项目开发感悟
- 一个小小研究生的华为面试之旅
- 黑马程序员——File类
- IOS:知乎上的一个怎么面试iOS工程师的问题
- Java程序员面试题集
- 黑马程序员——Java简介与安装
- 黑马程序员_关于path和classpath
- 黑马程序员 java枚举使用详解
- 黑马程序员 java反射详解
- 黑马程序员 Java中什么是接口回调?
- 黑马程序员 java多线程总结
- 黑马程序员 JAVA多线程实现的三种方式
- 黑马程序员 JAVA面向对象基础
- 黑马程序员 java 设计模式之 工厂方法
- 黑马程序员 深入理解 Java中的 流 (Stream)
- IT职业道路的苦与甜