冒号问号操作符趣事
来源:互联网 发布:php短信接口开发 编辑:程序博客网 时间:2024/05/16 10:23
看以下代码:
public class Demo{public static void main(String[] args){char x = 'A';int i = 65;boolean b = true;System.out.println(b ? 65 : x);System.out.println(b ? i : x);System.out.println(b ? x : 65);System.out.println(b ? x : i);System.out.println(b ? 'a' : i);System.out.println(b ? 'a' : 65);System.out.println("=====");b = false;System.out.println(b ? 65 : x);System.out.println(b ? i : x);System.out.println(b ? x : 65);System.out.println(b ? x : i);System.out.println(b ? 'a' : i);System.out.println(b ? 'a' : 65);}}
打印结果是否让你始料未及?
大概解释一下:
如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。换句话说,你可以通过绕过混合类型的计算来避免大麻烦。
如果一个操作数的类型是T,T表示byte、short、或者char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。
否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数呗提升之后的类型。
详情请看:JLS7之15.25。
- 冒号问号操作符趣事
- Java解惑系列(八)--问号冒号操作符
- 问号和冒号----条件运算符
- 问号冒号js (三元运算符)
- 冒号操作符
- 正则表达式 问号 冒号 ?:使用
- 正则表达式 问号 冒号 ?:使用
- HQL问号与冒号的区别
- JS里冒号操作符的含义?
- 冒号操作和初始化
- C#中双问号、双冒号等几个特殊关键字
- C/C++中问号冒号表达式的陷阱
- C/C++中问号冒号表达式的陷阱
- Excel批量添加逗号、冒号、问号、感叹号等
- C++ 箭头-> 双冒号:: 点号.操作符区别
- (转)双冒号 PHP范围解析操作符
- C++ 箭头-> 双冒号:: 点号.操作符区别
- C++ 箭头-> 点号. 双冒号::操作符区别
- 【Python】同时向控制台和文件输出日志logging
- UML类图——面向对象第一步
- 【转】地址重定位:静态重定位和动态重定位
- Android中设置自己应用为默认打开
- mysql数据库的导入导出命令方式,创建数据库
- 冒号问号操作符趣事
- linux c常用函数一览
- windows程序设计 例题解析 SYSMETS4.C
- 高效代码审查的十个经验
- 深入浅出设计模式(二)
- Project Euler 57
- 读写锁分析
- base64java加密源码
- IE中鼠标右键失效