java三目运算符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java三目运算符相关的知识,希望对你有一定的参考价值。
public static int compare(Dates a)
return year>a.year?1
:year<a.year?-1
:month>a.month?1
:month<a.month?-1
:day>a.day?1
:day<a.day?-1:0;
请问这个三目运算符是怎么计算的啊
看到复杂嵌套的三目运算不要慌,慢慢的一层层剖析你会发现其实也就那样。
根据三目定义 exp?st1:st2,exp的结果是个boolean类型的数据,如果是true则执行st1,如果为false则执行st2,所以 三目等价于if(exp)st1elsest2,由此可见上述你给的可以更改成如下代码:
if(year>a.year)return 1;
else
if(year<a.year)
return -1;
else
if(month>a.month)
return 1;
else
if(month<a.month)
return -1;
else
if(day>a.day)
return 1;
else
if(day<a.day)
return -1;
else
return 0;
追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答弱弱的问下,你从那看到或听到的应从右往左?
追问条件运算符的结合方向为"自右至左,自己去网上查查。。。
追答x?a:b?c:d
三目运算符,结合方向确实为自右至左。
先看b?c:d的结果:若b为真结果为c,否者为d,记b?c:d的结果为z,则x?a:b?c:d等价为x?a:z。若x为真,结果为a,否则为z。
先判断变量year是否大于对象a的year值,如果大于就返回1,小于就继续判断year是否小于对象a的year值,如果小于就返回-1;此后就是year==a.year的情况,依次判断月份和日追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答好像是从右到左,那你这样写还没if else效率高~~;其运算规则是从右到左,即先计算右则的表达式,也就是说你随便输出一个年月日,都要运行到最后一步,如果用if elseif else有可以第一步就判断出来了,还有就是你这么写逻辑不好理解,太复杂了!!
本回答被提问者采纳 参考技术B 这么狠的 三目 目测是 嵌套啊 谁写的 思路够强悍啊Java中的三目运算符
1、问题背景
下面代码执行的结果是:
A、hai
B、1987
C、1988
D、以上答案都不正确
/** * 三目运算符 * A、hai * B、1987 * C、1988 * D、以上答案都不正确 */ package com.you.model; /** * @author YOUHAIDONG * */ public class YesNo { /** * @param args */ public static void main(String[] args) { //声明一个整型变量you int you = 56; //字符串str String str = (you < 50) ? "hai":(you > 60) ? "1987":"1988"; //打印str System.out.println(str); } }
2、问题分析
(1)因为you这个变量为56,56是大于50的。为false,所以会是:(you > 60) ? "1987":"1988"
(2)又56是小于60的,为false,选:1988
3、问题答案
1988
以上是关于java三目运算符的主要内容,如果未能解决你的问题,请参考以下文章