如果你还看不懂的话,就把ab:c看成如下:
if(a){ //如果条件a为真
return b;
}else{
return c;
}三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个 *** 作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。
定义:
对于条件表达式b x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a b : c d : e将按a b : (c d : e)执行。加括号()是为了方便阅读,不加也是一样的。
可以理解为"(a<b)a:b"是一个"条件表达式",它是这样执行的: 如果a<b为真,则表达式取a值,否则取b值条件运算符由两个符号组成"“和”:", 要求有3个 *** 作对象,所以也叫它三目运算符,
(1)它的一般形式为:<表达式1> <表达式2> : <表达式3>; ""运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
(2)通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量,变量或表达式
(3)在程序中,通过把条件表达式的值直接赋予某个变量
A=(b>c)d:e1
(4)条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符
因此,min=(a<b)a:b括号可以不要,可直接写成,min=a<ba:b如果有x<yx+1:y-1等效于x<y(x+1):(y-1)而不等效于(x<yx+1:y)-1
(5) 条件运算符的结合方向为"自右至左"
(6) 条件表达式允许嵌套,即允许条件表达式中的表达式2和表达式3又是一个条件表达式例如:下面的例子
EL表达式中使用三目运算符:
单个判断:
${postNum == null 0 : postNum}
Servlet:
PwPersonalDetails personalDetails=pwPersonalDetailsService
findById(borrowerId);//查询个人信息
requestsetAttribute("personalDetails", personalDetails);//传参
jsp:
<div>
<p>有无购车:</p>
<p id="PurchaseCar">
${personalDetailspurchaseCar eq true "有购车":"无购车"}
</p>
</div>1234567891011121314
EL表达式结合三目运算符多个判断条件写法:
比如:我后台查询出来的borrowMoney(表单)数据有bidTypeId(标种类型)分别为1-7七种:我要传递到前端html给一个p标签根据bidTypeId不同给予不同的名称:
现在直接将多个三目运算符拼成多个条件的写法:
${borrowMoneybidTypeId eq 1 '信用额度:':(borrowMoneybidTypeId eq 2 '抵押额度:':(borrowMoneybidTypeId eq 5 '担保额度:':(borrowMoneybidTypeId eq 7 '流转额度:':'信用额度:')))}
希望对您有所帮助!~
看到复杂嵌套的三目运算不要慌,慢慢的一层层剖析你会发现其实也就那样。
根据三目定义 expst1:st2,exp的结果是个boolean类型的数据,如果是true则执行st1,如果为false则执行st2,所以 三目等价于if(exp){st1}else{st2},由此可见上述你给的可以更改成如下代码:
if(year>ayear){return 1;
}else{
if(year<ayear){
return -1;
}else{
if(month>amonth){
return 1;
}else{
if(month<amonth){
return -1;
}else{
if(day>aday){
return 1;
} else{
if(day<aday){
return -1;
}else{
return 0;
}
}
}
}
}
}A=[表达式]a:b;
等价于
if(表达式)A=a;
else A=b;
同理,
printf(y"\n":"no\n");
等价于
if(y)printf("\n");
else printf("no\n");
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)