![名师讲坛:Spring实战开发(Redis+SpringDataJPA+SpringMVC+SpringSecurity)](https://wfqqreader-1252317822.image.myqcloud.com/cover/156/29977156/b_29977156.jpg)
5.4 基本表达式
基本表达式描述的是简单的程序逻辑。例如,定义了一个数字1,则字面表达式解析后的内容就是1。同样,也可以通过表达式实现关系运算、逻辑运算以及三目运算处理。
5.4.1 字面表达式
字面表达式指的是直接在字符串中定义字符串或基本数据类型(数字、布尔、字符),通过字面表达式可以直接看到数据本身的内容。如表5-1所示为常见字面表达式的使用。
表5-1 字面表达式
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer787.jpg?sign=1739484151-bZhYdhVZUotcFVA6QxX1DiFQvQD8HzlS-0-009fef9a93d808e7f20aee7bcc556446)
范例:【mldnspring-base模块】处理科学计数法。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer706.jpg?sign=1739484151-H0veVo76A4WpBBKSy8RVKc5BKTTwbW6u-0-ba61ce51c9e7023688c730970658ff6b)
本程序采用了科学计数法实现了表达式的定义,随后为了方便显示内容,使用了printf格式化显示。
5.4.2 数学表达式
数学表达式描述的是基本的加、减、乘、除等计算处理,如表5-2所示。
表5-2 数学表达式
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer788.jpg?sign=1739484151-TFuT0ZnhPUkYvteCjFGpFYm7gNOuWHIm-0-3eb4c9078dd50161fa268c36abb46e88)
5.4.3 关系表达式
在定义关系表达式时,除了可以判断大小与相等关系外,还可以实现范围的判断,如表5-3所示。
表5-3 关系表达式
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer789.jpg?sign=1739484151-4evNPuReEV7AbcFf7m2scEklFD4tXP6M-0-c3ed7e7f5df1577e223040fefeef7b41)
5.4.4 逻辑表达式
逻辑判断主要有3个处理逻辑:与、或、非。利用逻辑表达式可以连接多个关系表达式,如表5-4所示给出了一些常见逻辑表达式的使用。
表5-4 逻辑表达式
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer790.jpg?sign=1739484151-lX9u6azmlZQ1tZ9cBLY0SWVQlJFYQ2FS-0-ba3fadf1e4dd72e655576c115f486fe8)
在表5-4中,由于非操作是在整体逻辑计算之后进行处理的,所以使用“( )”改变了计算的优先级。
5.4.5 三目运算操作
三目运算符(?:)组成的表达式是一种基于判断的赋值表达式,不仅在开发中广泛使用,在SpEL中也同样支持。基本的三目运算操作如表5-5所示。
表5-5 三目运算操作
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer791.jpg?sign=1739484151-siIe2osp3MvIixsnRxK45mvv778ly3tl-0-e6ff276c521096597cebb736b8fe69e6)
范例:【mldnspring-base模块】利用三目运算符构建一个基础的三目运算操作。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer707.jpg?sign=1739484151-UcE5JjDyLUf8FoHu15q172yOkB4eVTX0-0-30c9f909d87642136d613025b838c31f)
本程序利用三目运算符实现了判断与赋值处理,其基本的流程与程序区别不大。SpEL中除了这种三目运算符之外,还从Groovy语言引入了用于简化的三目运算符——Elivis运算符。其基本结构为“表达式1?:表达式2”,当表达式1为非null时,返回表达式1;当表达式1为null时,返回表达式2。
范例:【mldnspring-base模块】使用Elivis运算符。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer708.jpg?sign=1739484151-NeQKRbFEIzTFFfoMRlQmjUvhxTWf2qKH-0-db0a478eb5a1de55b45f1c1659201da6)
5.4.6 字符串处理表达式
在SpEL中,最大的特点是可以直接通过表达式的描述实现类中方法的调用,下面将通过字符串的操作进行演示。
范例:【mldnspring-base模块】进行字符串的指定字符获取(charAt)。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer709.jpg?sign=1739484151-lHhAVOOXirBGFknWGXbICp2vUusAQwon-0-ca1e6d9f3ec5ad9248c6c118acaa6cee)
在SpEL中通过索引访问,可以代替String类中的charAt方法的使用。
范例:【mldnspring-base模块】实现字符串的大写转换。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer710.jpg?sign=1739484151-PoixijY9gkNYBVAFaJSM2FfSOsTASPtJ-0-c08007510d52c1946e3931d58ff54fa6)
范例:【mldnspring-base模块】字符串替换。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer711.jpg?sign=1739484151-Tr5KCPHql4alC13sV0kmJEoz94lTrFbd-0-8099bda6d4ba87d4d4ea4d17c8f6a315)
通过程序可以发现,在定义字符串方法调用时,可以直接采用代码链的形式实现方法的调用。对于开发者而言,只是在编写一个简单的字符串。
5.4.7 正则匹配运算
正则在程序开发中有着重要的地位,利用正则可以方便地实现数据的匹配与字符串的相应操作。在SpEL中同样支持正则运算功能。
范例:【mldnspring-base模块】使用正则进行验证。
![](https://epubservercos.yuewen.com/5C1AE0/16499866905000506/epubprivate/OEBPS/Images/figer712.jpg?sign=1739484151-DGV0tQWxbEwZkwXLYfmwffK0aCYR9ctJ-0-065aec6770aba97c038de53d73988f1f)