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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘博 黑马帝   /  2011-12-16 11:12  /  2099 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public int compareTo(Person o) {
                int nameGap = this.name.compareTo(o.name);
                return nameGap !=0? nameGap : this.age - o.age;
       
        }
三元运算符对于初学者用的很少,但是它的强大支出不得不说省去很多的代码;

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

1 个回复

正序浏览
本帖最后由 晨曦 于 2011-12-16 13:08 编辑

这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。
表达式采取下述形式:

布尔表达式 ? 值0:值1

若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔表达式”的结果为false,计算的就是“值1”,而且它的结果成为最终由运算符产生的值。

也可以换用普通的if-else语句),但三元运算符更加简洁。尽管C引以为傲的就是它是一种简练的语言,而且三元运算符的引入多半就是为了体现这种高效率的编程,但假若您打算频繁用它,还是要先多作一些思量——它很容易就会产生可读性极差的代码。
可将条件运算符用于自己的“副作用”,或用于它生成的值。但通常都应将其用于值,因为那样做可将运算符与if-else明确区别开。下面便是一个例子:

static int ternary(int i) {
return i < 10 ? i * 100 : i * 10;
}

可以看出,假设用普通的if-else结构写上述代码,代码量会比上面多出许多。如下所示:

static int alternative(int i) {
if (i < 10)
return i * 100;
else
return i * 10;
}

但第二种形式更易理解,而且不要求更多的录入。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

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