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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滔哥 黑马帝   /  2014-8-14 15:56  /  9786 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问号表达式是对if-else语句的一种简写方式,格式为:
  1. (条件)?’值1’:’值2’;
复制代码
当条件符合时,表达式的值为“值1”,否则为“值2”。现在我们也已经写好了一部分代码,继续来判断车速的问题。我们这次要改变一下策略,将问号表达式的值直接赋值给speed,现在我们来在第7行写上speed =
然后我们来一步步的写这个问号表达式,先输入条件( speed > 60,并在之后加上问号运算符?
然后呢,当满足这个条件时,我们让运算式的结果为1,直接写在后面即可。
当不满足这个条件时,我们让运算式的结果为2,然后补全反括号和结束的分号);


这样我们的问号表达式就结束了,我们将speed的结果在一行中输出出来

  1. System.out.println(speed);
复制代码


输入>60的值:


输入<60的值:


29 个回复

倒序浏览
if  else的简写格式  三元运算符
回复 使用道具 举报
(条件)?’值1’:’值2’;
三元运算符  三元运算符,满足条件取值1  否则取值2
回复 使用道具 举报
三元运算符   滔哥辛苦  必须顶起!
回复 使用道具 举报
简写定有利弊端,
回复 使用道具 举报
三元运算符  
回复 使用道具 举报
很强大的东西
回复 使用道具 举报
三元运算符使用条件:表达式要有运算结果。
回复 使用道具 举报 1 0
sydeay 中级黑马 2014-8-16 11:53:01
9#
三元运算符,就是所谓的快捷方式了。这个让我们的思路豁然开朗。以后能简写就简写。
回复 使用道具 举报
本帖最后由 ⋛⋌⋚JEEP 于 2014-8-16 14:48 编辑

比如我们自定义学生类比较时需要覆盖compareTo方法,涉及到if语句的应用,一般的做法比较繁琐,如下:
  1. public int compareTo(Object obj) {//因为是覆盖compareTo方法,不能声明异常。
  2. if(!(obj instanceof Student))
  3. throw new RuntimeException("不是学生对象");
  4. Student s = (Student)obj;//obj强转为Student类型,才可以进行比较。
  5. if(this.age>s.age){
  6.   return 1;//按年龄比较,当前对象大于指定对象
  7. }if(this.age==s.age) {                        
  8. //主要条件相同时,需要比较次要条件,因为String类内部已经实现了compareTo的方法,直接调用即可。
  9. return this.name.compareTo(s.name);
  10. }return -1;//按年龄比较,当前对象小于指定对象
  11. }
复制代码

下面就是用三元运算符的多层应用化繁为简,格式:(条件1)?“值1”:(条件2)?“值2”:(条件3)?“值3”: ...
  1. public int compareTo(Object obj) {//因为是覆盖compareTo方法,不能声明异常。
  2. if(!(obj instanceof Student))
  3. throw new RuntimeException("不是学生对象");
  4. Student s = (Student)obj;//obj强转为Student类型,才可以进行比较。
  5. return this.age>s.age?1:this.age<s.age?-1:this.name.compareTo(s.name);//用三元运算符简化代码。
  6. }
复制代码
回复 使用道具 举报
刚好学到这了,来看看
回复 使用道具 举报
三元运算符的好处是:可以简化if  else,弊端是:运算完,必须要有一个结果。
回复 使用道具 举报

回复错了0.0

本帖最后由 赤魂者 于 2014-8-18 19:45 编辑

        public static void main(String[] args) {

                int a=0;
                System.out.println(   (a== 0?:a)   );
        }
大概意思就是在输出语句中判断如果a=0就不输出  上面的代码怎么改?
回复 使用道具 举报
这个用法还不了解,学习了
回复 使用道具 举报
学习了                                
回复 使用道具 举报
写的不错,老师辛苦了
回复 使用道具 举报
这个是 三元运算符没得说  但是提个问题
在给键盘录入定义变量时,为什么不写成  int speed=sc.nextInt();
这样对初学者来说 更规范了啊
回复 使用道具 举报
看完 涛哥的,,再看评论, 说的很好,而且 很容易懂
回复 使用道具 举报
wfaly 中级黑马 2014-8-23 23:06:48
19#
三元运算,条件?结果1:结果2
回复 使用道具 举报
学校讲这呢,整纳闷是什么意思~~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马