黑马程序员技术交流社区

标题: 第19课:问号表达式 [打印本页]

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


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

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


输入>60的值:


输入<60的值:



作者: liqiaohui    时间: 2014-8-14 16:37
if  else的简写格式  三元运算符
作者: 一顿一只牛    时间: 2014-8-14 21:10
(条件)?’值1’:’值2’;
三元运算符  三元运算符,满足条件取值1  否则取值2
作者: 钟翠翠    时间: 2014-8-15 11:18
三元运算符   滔哥辛苦  必须顶起!
作者: 华谦    时间: 2014-8-15 11:41
简写定有利弊端,
作者: 丁夏宁    时间: 2014-8-16 00:32
三元运算符  
作者: 恣意的豆腐    时间: 2014-8-16 08:44
很强大的东西
作者: 依然超级赛亚人    时间: 2014-8-16 10:03
三元运算符使用条件:表达式要有运算结果。
作者: sydeay    时间: 2014-8-16 11:53
三元运算符,就是所谓的快捷方式了。这个让我们的思路豁然开朗。以后能简写就简写。
作者: ⋛⋌⋚JEEP    时间: 2014-8-16 14:46
本帖最后由 ⋛⋌⋚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. }
复制代码

作者: 王远洋    时间: 2014-8-16 16:27
刚好学到这了,来看看
作者: 月夜小楠    时间: 2014-8-18 17:29
三元运算符的好处是:可以简化if  else,弊端是:运算完,必须要有一个结果。
作者: 赤魂者    时间: 2014-8-18 19:42
标题: 回复错了0.0
本帖最后由 赤魂者 于 2014-8-18 19:45 编辑

        public static void main(String[] args) {

                int a=0;
                System.out.println(   (a== 0?:a)   );
        }
大概意思就是在输出语句中判断如果a=0就不输出  上面的代码怎么改?
作者: 忆梦追风    时间: 2014-8-18 20:54
这个用法还不了解,学习了
作者: 渴望学习    时间: 2014-8-19 10:26
学习了                                
作者: 迦南    时间: 2014-8-19 10:44
写的不错,老师辛苦了
作者: 冷锋也温柔    时间: 2014-8-19 23:57
这个是 三元运算符没得说  但是提个问题
在给键盘录入定义变量时,为什么不写成  int speed=sc.nextInt();
这样对初学者来说 更规范了啊

作者: 毛富强    时间: 2014-8-20 09:36
看完 涛哥的,,再看评论, 说的很好,而且 很容易懂
作者: wfaly    时间: 2014-8-23 23:06
三元运算,条件?结果1:结果2
作者: 不淡定,小学生    时间: 2014-8-24 12:06
学校讲这呢,整纳闷是什么意思~~
作者: hi2hcs    时间: 2014-8-24 22:40
看看。。。
作者: 塞肥肥塞牙人    时间: 2014-9-3 11:31
复习了哈,谢谢
作者: 黄凯旋    时间: 2014-9-7 22:21
好东西当然要回帖
作者: zhumy111    时间: 2014-9-16 09:15
三元运算符,用一用可以提高写程序的效率
作者: java_student    时间: 2014-10-27 09:23
条件?1语句:2语句; 可以表述为:条件true,执行1,条件false,执行2 。
作者: lby369    时间: 2014-12-29 23:11
都是免费学习的机会,这些内容要找星期天这样的时间好好研究学习下。
作者: it667135    时间: 2014-12-30 00:59
不错,简单明了。
作者: mimawo    时间: 2014-12-30 13:06
就是一个三目运算符
作者: 陈胜华    时间: 2015-4-10 00:16
顶起。。。
作者: cyaimyt    时间: 2015-5-8 07:43
学习了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2