java 关于二目运算符(应该是叫这个名字)

publicclassqq{publicstaticvoidmain(Stringarg[]){intx=4;System.out.println("a="+((x>4)... public class qq {
public static void main(String arg[]){
int x=4;
System.out.println("a="+((x>4)?99.9:9));
}
} 最后结果是9.0而不是9,因为什么?是要跟前面那个表示一致,还是自动向级别高的浮点数转换?
展开
 我来答
寂夜飘零
2018-04-13 · TA获得超过397个赞
知道小有建树答主
回答量:474
采纳率:61%
帮助的人:218万
展开全部

其实是叫三目运算符的......

好进入正题,本人不是什么大神,就简单说下自己的看法理解,纯粹交流一下.

其实你的写法,直接在输出语句中写这个拼接是简化过的,完整的写法应该是:

int x=4;
double a=x>4?99.9:9;
//此时如果将上面double换成int,你会发现根本无法编译
System.out.println("a="+a);

其实还是相当于向上转型了,因为三目运算符是有返回值的,需要声明一个变量容器去承载这个返回值,这也是为什么单单写一个三目运算符,也是无法编译的,比如:

//仅仅写成下面这样,不在其前面声明一个变量,也是错误的
x>4?99.9:9;

所有,要声明一个变量,必须确定其类型,那么为了照顾前面的99.9,后面的9也必须向上转为与99.9相同的double型.

以上为个人理解,见笑了:)

匿名用户
2014-05-18
展开全部
System.out.println("a="+((x>4)?99.9:9));你把他改成System.out.println("a="+(x>4)?99.9:9); 你就可以看到结果 你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式