
5.4 基本表达式
基本表达式描述的是简单的程序逻辑。例如,定义了一个数字1,则字面表达式解析后的内容就是1。同样,也可以通过表达式实现关系运算、逻辑运算以及三目运算处理。
5.4.1 字面表达式
字面表达式指的是直接在字符串中定义字符串或基本数据类型(数字、布尔、字符),通过字面表达式可以直接看到数据本身的内容。如表5-1所示为常见字面表达式的使用。
表5-1 字面表达式

范例:【mldnspring-base模块】处理科学计数法。

本程序采用了科学计数法实现了表达式的定义,随后为了方便显示内容,使用了printf格式化显示。
5.4.2 数学表达式
数学表达式描述的是基本的加、减、乘、除等计算处理,如表5-2所示。
表5-2 数学表达式

5.4.3 关系表达式
在定义关系表达式时,除了可以判断大小与相等关系外,还可以实现范围的判断,如表5-3所示。
表5-3 关系表达式

5.4.4 逻辑表达式
逻辑判断主要有3个处理逻辑:与、或、非。利用逻辑表达式可以连接多个关系表达式,如表5-4所示给出了一些常见逻辑表达式的使用。
表5-4 逻辑表达式

在表5-4中,由于非操作是在整体逻辑计算之后进行处理的,所以使用“( )”改变了计算的优先级。
5.4.5 三目运算操作
三目运算符(?:)组成的表达式是一种基于判断的赋值表达式,不仅在开发中广泛使用,在SpEL中也同样支持。基本的三目运算操作如表5-5所示。
表5-5 三目运算操作

范例:【mldnspring-base模块】利用三目运算符构建一个基础的三目运算操作。

本程序利用三目运算符实现了判断与赋值处理,其基本的流程与程序区别不大。SpEL中除了这种三目运算符之外,还从Groovy语言引入了用于简化的三目运算符——Elivis运算符。其基本结构为“表达式1?:表达式2”,当表达式1为非null时,返回表达式1;当表达式1为null时,返回表达式2。
范例:【mldnspring-base模块】使用Elivis运算符。

5.4.6 字符串处理表达式
在SpEL中,最大的特点是可以直接通过表达式的描述实现类中方法的调用,下面将通过字符串的操作进行演示。
范例:【mldnspring-base模块】进行字符串的指定字符获取(charAt)。

在SpEL中通过索引访问,可以代替String类中的charAt方法的使用。
范例:【mldnspring-base模块】实现字符串的大写转换。

范例:【mldnspring-base模块】字符串替换。

通过程序可以发现,在定义字符串方法调用时,可以直接采用代码链的形式实现方法的调用。对于开发者而言,只是在编写一个简单的字符串。
5.4.7 正则匹配运算
正则在程序开发中有着重要的地位,利用正则可以方便地实现数据的匹配与字符串的相应操作。在SpEL中同样支持正则运算功能。
范例:【mldnspring-base模块】使用正则进行验证。
