Java条件表达式结果类型的规则
2014-06-11 11:10
197 查看
条件表达式结果类型转换规则:
System.out.println(false ? 1.0 : 1);
输出: 1.0
不应该输出成: 1
System.out.println( false ? 1 : 'a');
输出: a
System.out.println( false ? 1.0 : 'a');
输出: 97.0
什么表达中1变成1.0,就会输出'a'呢?
System.out.println( true ? 98 : 'a');
输出: b
同上
System.out.println( true ? 98.0 : 'a');
输出:98.0
同上
JAVA条件表达式,注意以下几点:
1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。
2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。比如:
System.out.println( true ? 98 : 'a'); 输出: b
3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。比如:
System.out.println( false ? 1.0 : 'a'); 输出: 97.0
System.out.println(false ? 1.0 : 1);
输出: 1.0
不应该输出成: 1
System.out.println( false ? 1 : 'a');
输出: a
System.out.println( false ? 1.0 : 'a');
输出: 97.0
什么表达中1变成1.0,就会输出'a'呢?
System.out.println( true ? 98 : 'a');
输出: b
同上
System.out.println( true ? 98.0 : 'a');
输出:98.0
同上
JAVA条件表达式,注意以下几点:
1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。
2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。比如:
System.out.println( true ? 98 : 'a'); 输出: b
3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。比如:
System.out.println( false ? 1.0 : 'a'); 输出: 97.0
相关文章推荐
- 【java解惑】条件表达式结果类型规则
- Java条件表达式结果类型的规则
- 【java解惑】条件表达式结果类型规则
- jsp 按照数据规则输出类似合并单元格类型的数据
- Java后台框架篇--Struts2.0之结果视图类型
- 15-JavaScript-基本语法-变量-规则-数据类型
- struts2 result type(结果类型)
- 问题:oracle long 与 clob;结果:long类型比clob到底差在什么地方?
- JavaScript的数据类型和命名规则
- error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
- Struts2结果类型
- pyunit扩展:自定义测试结果类型
- java基础总结——命名规则+path+基本数据类型
- Struts2 global-results(全局结果)+异常映射 Results结果类型
- (二) Struts2结果类型(Result Types)
- hostapd wpa_supplicant madwifi详细分析(十五)——supplicant扫描结果排序规则
- 数据库设计(二)(引擎,命名规则,字段类型的选择比较)
- 数据类型/强制类型转换 和运算符---标识符规则/关键字 a++和++a区别
- SharePoint 内容类型ID的规则
- 5、struts2访问Servlet API及web应用单元测试、结果类型及项目开发模式