黑马程序员技术交流社区

标题: 关于3元运算符与if else的问题! [打印本页]

作者: 黑马张平    时间: 2012-3-7 13:31
标题: 关于3元运算符与if else的问题!
视频上说 三元运算符 可以简化 if else代码,三元运算符运算完要有结果,这句话不明白,到底与if else 有何区别,能不能举例说明呢?!谢谢!
作者: 倪鹏博    时间: 2012-3-7 13:57
三元运算符的用法是:max=x>y?x:y;——也就是说需要把三元运算符一定要有结果,不是:号左边就是:号右边;
而if-else却不一定:
例如,
if(x>y)
{
System.out.println("y="+y);
}
else
{
System.out.println();
}
上面的例子之中,if—else就没有值,它可以输出任何内容,也可以什么都不做!用if-else来实现上面三元运算符的例子的话就是:
if(x>y)
{
max=x;
}
else
{
max=y;
}
这两中方法都是取最大值,明显三元运算符的要简单很多!这就是它们两的不同之处!
作者: 逄焕玮    时间: 2012-3-7 14:09
三元运算符 格式:
(条件表达式) ? 表达式1: 表达式2;

if  条件表达式的结果为true,运算后的结果为 表达式1
else 运算后的结果为 表达式2

举例就直接举毕老师视频中的例子了

需求:获取两个数中的大数
int x=3, y=4, z ;
z = (x>y) ? x : y ; //z变量存的就是x和y两个数中的大数

上面的三元运算符例子等同于 下面的 if  else语句
int x=3, y=4, z ;

if(x>y)    z = x;
else    z = y;

相信你也看出区别来了
z = (x>y) ? x : y ; 三元运算符这个整体是有运算结果的 (结果要么是表达式1,要么表达式2),可以直接赋值给变量 z 的
比起 if  else 语句来说,要简洁多了
作者: 泮和顺    时间: 2012-3-7 15:35
if可以由个区间条件 三元的只有真假判断 还是if应用广些
作者: a504079589    时间: 2012-3-7 21:13
三元运算符是操作符 表现形式是一个表达式;
if判断语句是一个控制结构;
三元运算符必须有结果 如: a > b ? a : b; 得出的不是a就是b;
能用if语句时,不一定能用三元运算符 如果if判断语句判断后可以输出一句话, 但三元运算符就做不到;
作者: 许圣建    时间: 2012-3-7 21:37
什么是运算符?
运算符就是会得到value值的符号,也就是说三元运算符是和+-*%%!等等一样的使用方法。他得到的是运算结果,而且只能是结果。
就像你不能写一句1+1,x+y,之后什么都不做,既不直接临时运用其结果,也不将其结果存储到变量,这样你做运算没有意义。
当然有一些时候运算会带有副作用,你可以只使用其副作用,具体的一时想不起来例子了,副作用的使用只是小技巧。
作者: 刘豪杰    时间: 2012-3-8 04:28
比如取x,y的最大值
用三元运算符表示是:max=x>y?x:y;            它的意思是说先比较x和y的大小。如果x大于y,则max返回x的值;否则max返回y的值
用if else表示是:
if(x>y)
  {max = x}
else
  {max = y}
这时可以用三元运算符来代替if else语句,可以看出明显的是简化了代码

但是如果if else语句变为了一下的代码
if(x>y)
   {System.out.println(x);}
else
  {System.out.println(y);}
这里比较后直接打印了最大值,并没有返回值。此时就不能用三元运算符来代替if else了

总的来说,用三元运算符代替if else语句,简化代码是有局限性的,只有当if else语句有返回值时才可以,否则不能用三元运算符代替if else语句
作者: 黑马张平    时间: 2012-3-8 09:00
谢谢各位!




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