使用if语句与使用条件运算符“?:”有什么不同?
解决方案 »
- 一个棋盘的问题,熟悉swing,java图形开发的朋友帮看看
- 用友NC 的二次开发流程
- 一段小代码的2个知识盲点~~
- 最快查找方法,进来看看啊.
- java里面有SqlParameter这个对象吗?
- 在一个界面用socket同时进行 双机通信 和 文件传输 怎么解决?
- 我编的多线程的程序,会翻转图片,如何能通过鼠标进入该窗口,图片会暂停,离开以后图片继续翻转!
- (有点麻烦的问题)如何定位foucs!
- 想学 java,需要什么环境?
- 哪里有Thinking in java 2ed下载啊。。。。
- Applet中,dbTable不能显示日期字段
- 有没有人用过IBM的aglet平台,或做过移动代理方面的东西啊?
IF
else if
else if
else而?就只能是
? 1:2
A?B:(C?D:(E?F:G))难道不可以吗
完全可以的
此外,从程序可读性上来说,如果只是一个条件,明显三元运算符更简洁;但如果是多个条件,那么使用if吧,否则读程序的人会把你骂上几千遍。
比如if里可以执行多条语句,但?:不行
if (a==1) {
System.out.println("a is 1");
System.out.println("0k");
} else {
System.out.println("a is not 1");
System.out.println("NG");
}
这样的if,?:就做不到了,但是可通过调用函数,比如把
System.out.println("a is 1");
System.out.println("0k");
写到一个函数中,然后在?:中调用函数
但是,这样的函数还有一个条件,就是必须要有返回值,因为?:需要返回值(C/C++也一样)
用三目运算符进行一些简单的分支还行,复杂了就自己把自己搞晕了.
三元运算符?:对于运算稍微简单的还可以,但是如果是复杂的就很难读懂了。
我个人感觉,还是用if...else好些。
先做定义
int a = 1;
double b = 2.1d;
int c ;使用三目运算符?:
c = a<b?a:b;
编译错误.返回值是一个double类型,不是int,运算符的一个重要特性就是会在运算之前将所有数据类型转换成相同的类型,所以a被转换成了double类型进行操作.而结果当然也是double类型.如果使用if.则如下:
if(a<b)
{
c = a;
}
正常通过编译.
楼主【fiveyue】截止到2008-07-11 17:06:39的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
转化成if-else:
if(i>0){
x=1;
}else{
x=2;
}
当?前的条件为true时,执行:前面的,为false时,执行:后面的语句,?:使用较简单,方便,一目了然.减少了代码量.但减少了可读性,建议使用if-else;
但假若您打算频繁用它,还是要先多作一些思量——它很容易就会产生可读性极差的代码。
可将条件运算符用于自己的“副作用”,或用于它生成的值。但通常都应将其用于值,因为那样做可将运算符与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;
return i * 10;
}但第二种形式更易理解,而且不要求更多的录入。所以在挑选三元运算符时,请务必权衡一下利弊。