2.4.5 操作符
2.4.5.1 常规算术操作符
常见的算术操作符主要如下所示:
操作符 | 说明 | 示例 |
---|---|---|
+ | 相加 | 1+2=3 |
- | 相减 | 1-2=-1 |
* | 相乘 | 2*2=4 |
/ | 相除 | 3/2=1.5 |
% | 求余 | 3%2=1 |
** | 求幂 | 3**2=9 |
2.4.5.2 赋值算术操作符
常见的赋值算术操作符主要如下所示:
操作符 | 说明 |
---|---|
+= | 相加并赋值 |
-= | 相减并赋值 |
*= | 相乘并赋值 |
/= | 相除并赋值 |
%= | 求余并赋值 |
**= | 求幂并赋值 |
2.4.5.3 关系操作符
常见的关系操作符主要如下所示:
操作符 | 说明 |
---|---|
== | 等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
=== | 绝对等于 |
!== | 绝对不等于 |
2.4.5.4 逻辑操作符
常见的逻辑操作符主要如下所示:
操作符 | 说明 |
---|---|
&& | 逻辑与 |
| | | 逻辑或 |
! | 逻辑非 |
2.4.5.5 三元操作符
Groovy中的三元操作符,其基本语法如下所示:
判断条件?条件成立的结果:条件不成立的结果
该操作符功能等同于if-else
示例结果如下所示:
def result=30>28?true:false
println "result is ${result}" // true
2.4.5.6 自增操作符
常见的自增操作符主要如下所示:
操作符 | 说明 |
---|---|
++ | 自增 |
-- | 自减 |
2.4.6 控制语句
2.4.6.1 if-else
Groovy中的if-else基本语法结构如下所示:
if (表达式){
// 执行语句
} else if (表达式) {
// 执行语句
} else {
// 执行语句
}
- 示例一:
def env="test"
if(env == "test"){
println "current env is ${env}"
} else if(env == "dev"){
println "current env is ${env}"
} else if(env == "release"){
println "current env is ${env}"
} else {
println "unknown env"
}
- 示例二:
def personInfo=[:]
if (personInfo.isEmpty()){
println "personInfo is empty:${personInfo} "
} else {
println "personInfo value :${personInfo} "
}
2.4.6.2 switch-case
Groovy中的switch-case基本语法结构如下所示:
- 语法一:常规用法
switch (变量值){
case 条件1:
// 执行语句或表达式
break
case 条件2:
// 执行语句或表达式
break
case 条件3:
// 执行语句或表达式
break
case [条件3,条件4,条件5]:
// 执行语句或表达式
break
default:
// 执行语句或表达式
}
- 语法二:支持switch-case 表达式
def variable = swithc (变量值){
case 条件1 -> "结果1"
case 条件2 -> "结果2"
case 条件3 -> "结果3"
case 条件4 -> "结果4"
}
- 示例一:
def env="test"
switch (env){
case "test":
println "current env is ${env}"
break
case "dev":
println "current env is ${env}"
break
case "release":
println "current env is ${env}"
break
default:
println "unknown env"
}
- 示例二:
def env="dev"
switch (env){
case ["test","dev"]:
println "current env is test or dev ,not release yet"
break
case "release":
println "current env is ${env}"
break
default:
println "unknown env"
} println "unknown env"
}
- 示例三:
def env="test"
def currentEnv=switch (env){
case "test" -> "current env is test"
case "dev" -> "current env is dev"
case "release" -> "current env is release"
}
println currentEnv
2.4.6.3 循环语句
2.4.6.3.1 for语句
- 1.经典for语句
经典for语句
,其语法结构如下所示:
for ( init; condition; increment )
{
// statement
}
- 2.for-in
for-in
其语法结构如下所示:
for ( item in Object)
{
// statement
}
2.4.6.3.2 while语句
- 1.while
while
其语法结构如下所示:
while(condition){
// statement
}
- 2.do-while
do-while
其语法结构如下所示:
do {
// statement
} while(condition)
2.4.6.3.3 示例
示例如下所示:
- for示例
def hello="Hello,Surpass"
def helloSplit=hello.split(",")
for(def i=0; i < helloSplit.length;i++) {
println helloSplit[i]
}
- for-in示例
def personInfoMap=[name:"Surpass",age:28,loc:"Shanghai"]
for (item in personInfoMap){
println "Key is : ${item.key},value is :${item.value}"
}
def personInfoList=["Surpass",28,"Shanghai"]
for (item in personInfoList){
println "current itme is ${item}"
}
- while/do-while示例
def (endNumberA,endNumberB,sumA,sumB)=[100,100,0,0]
while (endNumberA > 0){
sumA+=endNumberA
endNumberA--
}
do{
sumB+=endNumberB
endNumberB--
}while (endNumberB > 0)
2.4.7 函数
2.4.7.1 基本定义
Groovy中的函数基本语法如下所示:
def functionName(parasA,...,parasN=defaulValue){
// 执行语句
return parasA
}
简要说明如下所示:
- 函数定义使用关键字
def
- 函数的参数可以存在
默认值
,如果没有值传给参数,则使用默认值、
如果参数即存在非默认参数和默认参数,则默认参数必须位于参数列表的末尾进行定义
- 函数的返回值,可以使用
return
返回,如果没有return语句
,则默认使用最后一个表达式的值做为返回值
函数也可以一次性返回多个值,可以使用多变量赋值进行接收
2.4.7.2 函数示例
示例如下所示:
- 1.函数基本使用
def hello(name){
return "Hello,${name}"
}
println hello("Surpass") // Hello,Surpass
- 2.使用默认参数值
def hello(name,city="Shanghai"){
return "Hello,${name},welcome to ${city}"
}
println hello("Surpass") // Hello,Surpass,welcome to Shanghai
println hello("Surpass","Wuhan") // Hello,Surpass,welcome to Wuhan
- 3.使用不带return的返回值
def hello(name,city="Shanghai"){
def testStr="Test no return "
helloStr="Hello,${name},welcome to ${city}"
}
println hello("Surpass","Wuhan") // Hello,Surpass,welcome to Wuhan
- 4.使用不带return的返回值
def hello(name,city="Shanghai"){
helloStr="Hello,${name},welcome to ${city}"
def testStr="Test no return "
}
println hello("Surpass","Wuhan") // Test no return
- 5.返回多个值
def hello(name,city="Shanghai",from="Wuhan",to="Shenzen"){
return [name,city,from,to]
}
def (name,city,from,to)=hello(name="Surpass")
println "name:${name},city:${city},from ${from},to ${to}" // name:Surpass,city:Shanghai,from Wuhan,to Shenzen