1.数据类型
1.1.基本数据类型
(1)Groovy提供多种内置数据类型。以下是在Groovy中定义的数据类型的列表 -
-
byte -这是用来表示字节值。例如2。
-
short -这是用来表示一个短整型。例如10。
-
int -这是用来表示整数。例如1234。
-
long -这是用来表示一个长整型。例如10000090。
-
float -这是用来表示32位浮点数。例如12.34。
-
double -这是用来表示64位浮点数,这些数字是有时可能需要的更长的十进制数表示。例如12.3456565。
-
char -这定义了单个字符文字。例如“A”。
-
Boolean -这表示一个布尔值,可以是true或false。
-
String -这些是以字符串的形式表示的文本。例如,“Hello World”的。
groovy中数据类型默认装箱,所以其等价于
- java.lang.Byte
- java.lang.Short
- java.lang.Integer
- java.lang.Long
- java.lang.Float
- java.lang.Double
就比如下面代码,可以看到a的class是Integer
int a=3
Integer a1=new Integer(3)
/*class java.lang.Integer
true*/
println(a.class)
println(a==a1)
(2)除了像Java中明确的生命类型以外。groovy中特别之处在于可以使用类似于其他脚本中的var来声明变量,运行时确认变量类型
def var
var=1
var="hello"
var=new Person()
1.2循环控制
(1)强大的switch
def x=1.23
def result
switch (x){
case 'foo':
result='hihi'
break
case [1,2,2,3,5,'ninihao']:
result=1
break
case 1..3:
result=true
break
case Integer:
result="integer"
break
case 1.23f:
result="int"
break
case BigDecimal:
result=1
break
case 1.23d:
result="int"
break
default:
result="default"
break
}
case条件可以是任何内容,我们定义一个1.23在groovy中默认是java.math.BigDecimal,但是在使用比较可以看出,和double类型是==的。
println(x==1.23f)
println(x==1.23d)
println(x==1.23)
println(x.class)
println(1.23d.class)
结果是
false
true
true
class java.math.BigDecimal
class java.lang.Double
(2)多样的for
范围类型:1..9就是1到9,还可以使用
1..<9
来表示边界不包含9.
对应的for(i in 1..9)
当然最平常的就是
for (int i = 0; i < 9; i++) {
}
for (i in [1, 2, 3, 4, 5, 6, 7, 8,9]) {
}
groovy中list,map,数组,都是使用[ ],这个表达式
for (i in ['name':'vode','age':22]) {
}
(3)还是一样的while
1.3闭包
闭包就是{ }就和C#里面是差不多的以及Java的代码块
def clos1={
println("hello vode")
}
//这个是普通调用闭包
clos1.call()
//还可以像方法一样调用
clos1()
闭包也可以像方法一样传递参数,就像这样
//->前面是参数,后面是闭包方法体
def clo2={
String name->println("hello ${name}")
}
clo2('vode')
对于多个参数,可以这样,注意到这里${name},$age取值其实也是一个闭包{ }在这里可以省略
def clo3={
String name,int age->println("hello ${name},$age")
}
clo3('vode',22)
需要注意一点就是,对于所有的闭包,都有一个默认参数it,取值就是${it},