1. Groovy 概述
Groovy是一种基于Java平台的面向对象语言,是Apache 旗下的一种基于JVM的面向对象编程语言,既可以用于面向对象编程,也可以用作纯粹的脚本语言。
2. 变量定义
def关键字定义变量,也可以用指定类型,默认访问修饰符是public
def defNumber = 10
int intNumber = 10
3. 方法定义
方法可用def定义,入参可以不用指定类型
def test(a,b,c){
print a+b+c
}
int test(int a){
return a;
}
方法有返回值可以用return,也可以省略,默认最后一行为返回结果
int add(a,b){
a+b
}
4. 类
与Java类相似,区别:
- 默认修饰符为public
- 全局参数用public修饰会自动生成setter方法和getter方法
- 类名可以不用groovy文件名一致
5. 语法
5.1 for循环
支持Java中的for循环 for(int i=0;i<10;i++) 和 for(int i:array)
for (def i : [1, 2, 3]) {
println i
}
for (def i : 1..3) {
println i
}
5.2 switch
Groovy不仅支持字符串和枚举,也支持数组,对象
def switchMethod(x){
switch (x){
case 'string':
return 'string'
case [1,3]:
return 'array'
case 1..3:
return 'range'
case String:
return 'String.class'
default:
return 'default'
}
}
switchMethod(1) 返回 array
5.2 数字
def number = 8888888888 //def 会根据字面值自动调整类型
def number_int = 8I //Integer
def number_float = 8.8F //Float
def number_double = 8.88D //Double
def number_big_decimal = 88.88G //BigDecimal
5.3 字符串
单引号字符串和双引号字符串都可以定义一个字符串常量,区别是双引号支持插值
def str = 'share'
println '${str}' //${str}
println "${str}" //share
println "$str" //share
三引号字符串可以保留文本的换行和缩进格式,不支持插值。
def str= '''
test
string
'''
5.4 数组
[] 表示数组,元素可以是同一类型,也可以是不同类型
def array = [1, 'a', [2.2, 'bc']]
获取元素
array[2][1] //'bc'
5.5 映射
[:] 表示映射
def map = ['k': 'v', 1: 'b', 'array': [1, 2]]
获取值
map['array'] //[1, 2]
5.6 闭包
语法与Java Lambda表达式类似
def closureString = 'closure'
def closure = {
closureString // closure()的返回值为'closure'
}
def closure = { x ->
if ('x' == x) {
x = '=='
} else {
x = '!='
}
x
}
one.closure('x') // 返回值 '=='
def closureMethod(array, print) {
for (def x : array) {
print(x)
}
}
one.closureMethod([1..3]) { x -> println x } // [1, 2, 3]