A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李朋朋 中级黑马   /  2012-7-23 01:39  /  1942 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

三元表达式:表达式1?表达式2:表达式3,在什么情况下应用,应用时对三个表达式有什么要求?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
在整个表达式不太长的时候,写成三元表达式可以省一些事,不用再写个if()条件语句。三元表达式的第一个表达式为条件,如果为真,变量的值就为第二个表达式的值,如果是假,就为第三个表达式的值。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 徐帅 于 2012-7-23 08:10 编辑

在比较简单的表达式语句中使用三元运算符,三元运算符比if else 语句更简洁不过
当表达式较复杂时,三元运算符的可读性就变得很差,
当然对三个表达式的使用要求:
表达式1 可以是任意类型,但返回值必须是boolean型,对于表达式2 和表达式3,使用时就应该注意
应该保证他们的值类型一致,因为混合类型的计算会引起结果的混乱,其实是有类型的转换问题
public void Test(){
int num = 5; char ch = A;
System.out.println(true? : num : ch);
System.out.println(false? : num: ch);
}
打印结果是5,和65;
第二个是A的Ascii码值。
这里是类型的提升,含有其他double,byte,也一样,在不同类型的计算中,类型较低的会被转化
类型较高的类型。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
一般情况下能用if-else实现条件判断的时候就可以用三元表达式:表达式1?表达式2:表达式3来替代了!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在表达式boolean-exp ? value0 : value1 中,如果“布尔表达式”的结果为true,就计算“value0”,而且这个计算结果也就是操作符最终产生的值。如果“布尔表达式”的结果为false,就计算“value1”,同样,它的结果也就成为了操作符最终产生的值。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马