教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

EL運(yùn)算符詳細(xì)介紹【EL運(yùn)算符匯總】

更新時(shí)間:2021年11月04日15時(shí)49分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

EL表達(dá)式支持簡單的運(yùn)算,例如,加(+)、減(一)、乘(*),陳(/)守。為此,在EL中越供了多種運(yùn)算符,根據(jù)運(yùn)算方式的不同,EL中原算符包括一下幾種。

1.點(diǎn)運(yùn)算符(.)

EL表達(dá)式中的點(diǎn)運(yùn)算符,用于訪問JSP頁面中某些對(duì)象的屬性,如JavaBean對(duì)象、List對(duì)象、Array對(duì)象等,其語法格式如下。

${customer.name}

在上述語法格式中,表達(dá)式${customer.name}中點(diǎn)運(yùn)算符的作用就是訪問customer對(duì)象中的name屬性。


2.方括號(hào)運(yùn)算符([)

EL表達(dá)式中的方括號(hào)運(yùn)算符與點(diǎn)運(yùn)算符的功能相同,都用于訪問JSP頁面中某些對(duì)象的屬性,當(dāng)獲取的屬性名中包含一些特殊符號(hào),如“一”或“?”等并非字母或數(shù)字的符號(hào),就只能使用方括號(hào)運(yùn)算符來訪問該屬性,其語法格式如下。

${user{"My-Name"}}

需要注意的是,在訪問對(duì)象的屬性時(shí),通常情況都會(huì)使用點(diǎn)運(yùn)算符作為簡單的寫法,但實(shí)際上,方括號(hào)運(yùn)算符比點(diǎn)運(yùn)算符應(yīng)用更加廣泛。接下來就對(duì)比一下這兩種運(yùn)算符在實(shí)際開發(fā)中的應(yīng)用,具體如下。

(1)點(diǎn)運(yùn)算符和方括號(hào)運(yùn)算符在某種情況下可以互換,如${student.name}等價(jià)于${student["name"]}。

(2)方括號(hào)運(yùn)算符和點(diǎn)運(yùn)算符可以相互結(jié)合使用,例如,表達(dá)式${users[0].userName}可以訪問集合或數(shù)組中的第一個(gè)元素的userName屬性。

(3)方括號(hào)運(yùn)算符還可以訪問List集合或數(shù)組中指定索引的某個(gè)元素,如表達(dá)式${users[0]}用于訪問集合或數(shù)組中第一個(gè)元素。在這種情況下,只能使用方括號(hào)運(yùn)算符,而不能使用點(diǎn)運(yùn)算符。


3.算術(shù)運(yùn)算符

EL表達(dá)式中的算術(shù)運(yùn)算符用于對(duì)整數(shù)和浮點(diǎn)數(shù)的值進(jìn)行算術(shù)運(yùn)算。使用這些算術(shù)運(yùn)算符可以非常方便地在JSP頁面進(jìn)行算術(shù)運(yùn)算,并且可以簡化頁面的代碼量。接下來通過下表來列舉EL表達(dá)式中所有的算術(shù)運(yùn)算符。

算數(shù)運(yùn)算符
算數(shù)運(yùn)算符 說明 算數(shù)表達(dá)式 結(jié)果
+ ${10+2} 12
- ${10-2} 8
* ${10*2} 20
/(或div) ${10/4}或${10div2} 2.5
%(或mod) 取模(取余) ${10%4}或${10mod2} 2


上表中,列舉了EL表達(dá)式中所有的算術(shù)運(yùn)算符,這些運(yùn)算符相對(duì)來說比較簡單。在使用這些運(yùn)算符時(shí)需要注意兩個(gè)問題,“一”運(yùn)算符既可以作為減號(hào),也可以作為負(fù)號(hào),“/”或“div”運(yùn)算符在進(jìn)行除法運(yùn)算時(shí),商為小數(shù)。


4.比較運(yùn)算符

EL表達(dá)式中的比較運(yùn)算符用于比較兩個(gè)操作數(shù)的大小,操作數(shù)可以是各種常量、EL變量或EL表達(dá)式,所有的運(yùn)算符執(zhí)行的結(jié)果都是布爾類型。接下來通過表來列舉EL表達(dá)式中所有的比較運(yùn)算術(shù)符。

比較運(yùn)算符
比較運(yùn)算符 說明 算數(shù)表達(dá)式 結(jié)果
==(或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表達(dá)式中所有的比較運(yùn)算符,在使用這些運(yùn)算符時(shí)需要注意兩個(gè)問題,具體如下:

(1)比較運(yùn)算符中的“==”是兩個(gè)等號(hào),千萬不可只寫一個(gè)等號(hào)。

(2)為了避免與JSP頁面的標(biāo)簽產(chǎn)生沖突,對(duì)于后4種比較運(yùn)算符,EL表達(dá)式中通常使用括號(hào)內(nèi)的表示方式,例如,使用“1t”代替“≤”運(yùn)算符,如果運(yùn)算符后面是數(shù)字,在運(yùn)算符和數(shù)字之間至少要有一個(gè)空格,例如${1lt 2},但后面如果有其他符號(hào)時(shí)則可以不加空格,例如${1lt(1+1)}。


5.邏輯運(yùn)算符

EL表達(dá)式中的邏輯運(yùn)算符用于對(duì)結(jié)果為布爾類型的表達(dá)式進(jìn)行運(yùn)算,運(yùn)算的結(jié)果仍為布爾類型。接下來通過下表列舉EL表達(dá)式中所有的邏輯運(yùn)算符。

邏輯運(yùn)算符
邏輯運(yùn)算符 說明 算數(shù)表達(dá)式 結(jié)果
&&(and) 邏輯與 ${true&&false}或者{ture and false} false
||(or) 邏輯或 ${fasle||true}或者{false or true} true
!(not) 邏輯非 ${!true}或${not ture} false

上表中,列出了EL表達(dá)式中的3種邏輯運(yùn)算符,需要注意的是,在使用&.&運(yùn)算符時(shí),如果有―個(gè)表達(dá)式結(jié)果為false,則結(jié)果必為false,在使用||運(yùn)算符時(shí),如果有一個(gè)表達(dá)式的結(jié)果為true,則結(jié)果必為true。

6.empty運(yùn)算符

EL表達(dá)式中的emptv運(yùn)算符用干判斷某個(gè)對(duì)象是否為null或"",結(jié)果為布爾類型,其基本的語法格式如下所示。

${empty var}

需要注意的是,empty運(yùn)算符可以判定變量(或表達(dá)式)是否為null或""。例如,下列情況empty運(yùn)算符的返回值為true。

(1) var變量不存在,即沒有定義,例如表達(dá)式${empty name},如果不存在name變量,就返回true。

(2) var變量的值為null,例如表達(dá)式${empty customer.name},如果customer.name的值為null,就返回true。

(3) var變量引用集合(Set、 Map和 List)類型對(duì)象,并且在集合對(duì)象中不包含任何元素。


7.條件運(yùn)算符

EL表達(dá)式中條件運(yùn)算符用于執(zhí)行某種條件判斷,它類似于Java語言中的if一else語句,其語法格式如下。

${A? B:C}

在上述語法格式中,表達(dá)式A的計(jì)算結(jié)果為布爾類型,如果表達(dá)式A的計(jì)算結(jié)果為true,就執(zhí)行表達(dá)式B并返回B的值;如果表達(dá)式A的計(jì)算結(jié)果為false,就執(zhí)行表達(dá)式C并返回C的值,例如表達(dá)式${(1==2)?3:4}的結(jié)果就為4。


8.“()”運(yùn)算符

EL表達(dá)式中的圓括號(hào)用于改變其他運(yùn)算符的優(yōu)先級(jí),例如表示${a*b+C},正常情況下會(huì)計(jì)算a*b的積,然后再將計(jì)算的結(jié)果與C相加,如果在這個(gè)表達(dá)式中加一個(gè)圓括號(hào)運(yùn)算符,將表達(dá)式修改為${a*(b+c)},這樣則先計(jì)算b與C的和,再將計(jì)算的記過與a相乘。

需要注意的是,EL表達(dá)式中的運(yùn)算符都有不同的運(yùn)算優(yōu)先級(jí),當(dāng)EL表達(dá)式中包含多種運(yùn)算符時(shí),它們必須按照各自優(yōu)先級(jí)的大小來進(jìn)行運(yùn)算。接下來,通過下面表格來描述這些運(yùn)算的優(yōu)先級(jí)。

運(yùn)算符的優(yōu)先級(jí)
優(yōu)先級(jí) 運(yùn)算符 優(yōu)先級(jí) 運(yùn)算符
1 []. 6 <> <= >= lt gt le ge
2 () 7 == != eq ne 
3 -(-) not ! empty 8 && and
4 * / div % mod 9 || or 
5 +(+)-(-) 10 ?:

上面列表,列舉了不同運(yùn)算符各自的優(yōu)先級(jí)大小。對(duì)于初學(xué)者來說,這些運(yùn)算符的優(yōu)先級(jí)不必刻意地去記憶。為了防止產(chǎn)生歧義,建議讀者盡量使用“()”運(yùn)算符來實(shí)現(xiàn)想要的運(yùn)算順序。注意:在應(yīng)用EL表達(dá)式取值時(shí),沒有數(shù)組的下標(biāo)越界,沒有空指針異常,沒有字符串的拼接。



猜你喜歡

EL標(biāo)識(shí)符的規(guī)范和保留字

JVM組成部分和作用詳細(xì)介紹

MyBatis的執(zhí)行原理詳細(xì)介紹

Java中怎樣定義和聲明接口?

傳智教育Java培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!