EL运算符详细介绍【EL运算符汇总】

EL表达式支持简单的运算,例如,加(+)、减(一)、乘(*),陈(/)守。为此,在EL中越供了多种运算符,根据运算方式的不同,EL中原算符包括一下几种。

1.点运算符(.)

EL表达式中的点运算符,用于访问JSP页面中某些对象的属性,如JavaBean对象、List对象、Array对象等,其语法格式如下。

${customer.name}

在上述语法格式中,表达式${customer.name}中点运算符的作用就是访问customer对象中的name属性。

2.方括号运算符([)

EL表达式中的方括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性,当获取的属性名中包含一些特殊符号,如“一”或“?”等并非字母或数字的符号,就只能使用方括号运算符来访问该属性,其语法格式如下。

${user{"My-Name"}}

需要注意的是,在访问对象的属性时,通常情况都会使用点运算符作为简单的写法,但实际上,方括号运算符比点运算符应用更加广泛。接下来就对比一下这两种运算符在实际开发中的应用,具体如下。

(1)点运算符和方括号运算符在某种情况下可以互换,如${student.name}等价于${student["name"]}。

(2)方括号运算符和点运算符可以相互结合使用,例如,表达式${users[0].userName}可以访问集合或数组中的第一个元素的userName属性。

(3)方括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式${users[0]}用于访问集合或数组中第一个元素。在这种情况下,只能使用方括号运算符,而不能使用点运算符。

3.算术运算符

EL表达式中的算术运算符用于对整数和浮点数的值进行算术运算。使用这些算术运算符可以非常方便地在JSP页面进行算术运算,并且可以简化页面的代码量。接下来通过下表来列举EL表达式中所有的算术运算符。

算数运算符
算数运算符 说明 算数表达式 结果
+ ${10+2} 12
${10-2} 8
* ${10*2} 20
/(或div) ${10/4}或${10div2} 2.5
%(或mod) 取模(取余) ${10%4}或${10mod2} 2

上表中,列举了EL表达式中所有的算术运算符,这些运算符相对来说比较简单。在使用这些运算符时需要注意两个问题,“一”运算符既可以作为减号,也可以作为负号,“/”或“div”运算符在进行除法运算时,商为小数。

4.比较运算符

EL表达式中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL变量或EL表达式,所有的运算符执行的结果都是布尔类型。接下来通过表来列举EL表达式中所有的比较运算术符。

比较运算符
比较运算符 说明 算数表达式 结果
==(或eq) 等于 ${10==2}或${10 eq 2} false
!=(或ne) 不等于 ${10!=2}或${10 ne 2} true
<(或lt) 小于 ${10<2}或${10 lt 2} false
>(或gt) 大于 ${10>2}或${10 gt 2} true
<=(或le) 小于等于 ${10<=2}或${10 le 2} false
>= (或ge) 大于等于 ${10 >=2}或${10 ge 2} true

上表中,列举了EL表达式中所有的比较运算符,在使用这些运算符时需要注意两个问题,具体如下:

(1)比较运算符中的“==”是两个等号,千万不可只写一个等号。

(2)为了避免与JSP页面的标签产生冲突,对于后4种比较运算符,EL表达式中通常使用括号内的表示方式,例如,使用“1t”代替“≤”运算符,如果运算符后面是数字,在运算符和数字之间至少要有一个空格,例如${1lt 2},但后面如果有其他符号时则可以不加空格,例如${1lt(1+1)}。

5.逻辑运算符

EL表达式中的逻辑运算符用于对结果为布尔类型的表达式进行运算,运算的结果仍为布尔类型。接下来通过下表列举EL表达式中所有的逻辑运算符。

逻辑运算符
逻辑运算符 说明 算数表达式 结果
&&(and) 逻辑与 ${true&&false}或者{ture and false} false
||(or) 逻辑或 ${fasle||true}或者{false or true} true
!(not) 逻辑非 ${!true}或${not ture} false

上表中,列出了EL表达式中的3种逻辑运算符,需要注意的是,在使用&.&运算符时,如果有―个表达式结果为false,则结果必为false,在使用||运算符时,如果有一个表达式的结果为true,则结果必为true。

6.empty运算符

EL表达式中的emptv运算符用干判断某个对象是否为null或"",结果为布尔类型,其基本的语法格式如下所示。

${empty var}

需要注意的是,empty运算符可以判定变量(或表达式)是否为null或""。例如,下列情况empty运算符的返回值为true。

(1) var变量不存在,即没有定义,例如表达式${empty name},如果不存在name变量,就返回true。

(2) var变量的值为null,例如表达式${empty customer.name},如果customer.name的值为null,就返回true。

(3) var变量引用集合(Set、 Map和 List)类型对象,并且在集合对象中不包含任何元素。

7.条件运算符

EL表达式中条件运算符用于执行某种条件判断,它类似于Java语言中的if一else语句,其语法格式如下。

${A? B:C}

在上述语法格式中,表达式A的计算结果为布尔类型,如果表达式A的计算结果为true,就执行表达式B并返回B的值;如果表达式A的计算结果为false,就执行表达式C并返回C的值,例如表达式${(1==2)?3:4}的结果就为4。

8.“()”运算符

EL表达式中的圆括号用于改变其他运算符的优先级,例如表示${a*b+C},正常情况下会计算a*b的积,然后再将计算的结果与C相加,如果在这个表达式中加一个圆括号运算符,将表达式修改为${a*(b+c)},这样则先计算b与C的和,再将计算的记过与a相乘。

需要注意的是,EL表达式中的运算符都有不同的运算优先级,当EL表达式中包含多种运算符时,它们必须按照各自优先级的大小来进行运算。接下来,通过下面表格来描述这些运算的优先级。

运算符的优先级
优先级 运算符 优先级 运算符
1 []. 6 <> <= >= lt gt le ge
2 () 7 == != eq ne 
3 -(-) not ! empty 8 && and
4 * / div % mod 9 || or 
5 +(+)-(-) 10 ?:

上面列表,列举了不同运算符各自的优先级大小。对于初学者来说,这些运算符的优先级不必刻意地去记忆。为了防止产生歧义,建议读者尽量使用“()”运算符来实现想要的运算顺序。注意:在应用EL表达式取值时,没有数组的下标越界,没有空指针异常,没有字符串的拼接。

猜你喜欢

EL标识符的规范和保留字

JVM组成部分和作用详细介绍

MyBatis的执行原理详细介绍

Java中怎样定义和声明接口?

传智教育课程

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/254013.html

(0)
上一篇 2022年5月9日
下一篇 2022年5月9日

相关推荐

发表回复

登录后才能评论