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

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

EL運算符詳細介紹【EL運算符匯總】

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

好口碑IT培訓(xùn)

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

1.點運算符(.)

EL表達式中的點運算符,用于訪問JSP頁面中某些對象的屬性,如JavaBean對象、List對象、Array對象等,其語法格式如下。

${customer.name}

在上述語法格式中,表達式${customer.name}中點運算符的作用就是訪問customer對象中的name屬性。


2.方括號運算符([)

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

${user{"My-Name"}}

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

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

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

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


3.算術(shù)運算符

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

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


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


4.比較運算符

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

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

(1)比較運算符中的“==”是兩個等號,千萬不可只寫一個等號。

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


5.邏輯運算符

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

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

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

6.empty運算符

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

${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表達式中條件運算符用于執(zhí)行某種條件判斷,它類似于Java語言中的if一else語句,其語法格式如下。

${A? B:C}

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


8.“()”運算符

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

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

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

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



猜你喜歡

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

JVM組成部分和作用詳細介紹

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

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

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

0 分享到:
和我們在線交談!