目录
1. groovy简介
Gradle脚本使用的是Groovy语言,Groovy也是基于JVM的一种动态语言,基于Java并扩展了Java语言。Groovy会使写Java程序就要写脚本一样简单,写完就可以执行,所以看起来也像是一门脚本语言。Groovy内部会把代码编译为Java class文件然后启动虚拟机来执行。
2. 基本使用
创建一个HelloGroovy.groovy文件,里面输出 hello groovy!
println 'hello groovy!'
直接执行命令 groovy HelloGroovy.groovy
即可得到结果
3. 字符串使用
String str1='hello'
println 'hello groovy!' // 单引号直接打印
println "$str1 groovy!" // 双引号可以通过$打印引用
String str1='groovy'
println "${str1+str2}" // 通过 ${} 打印表达式
println '''
dd
''' // 三引号打印一段
4. 变量:def关键字
Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以使用关键字def。注意,虽然def不是必须的,但是为了代码清晰,建议还是使用def关键字
def a = 1 //定义一个整形
def b = "字符串" //定义一个字符串
def double c = 1.0 //定义一个 double 类型,也可以指定变量类型
5. 集合
Groovy的基本类型和Java一样,对于集合来说List的具体实现是ArrayList,Map集合的具体实现是LinkedHashMap。
//定义一个List
def lists=['groovy','gradle','android']
//打印集合size
println lists.size
//打印集合中的数据
lists.each{
it->println it
}
// 取元素
println lists[0]
// 添加元素,不需要担心数组越界
lists[100] = 'sad'
6. Map的使用
``` //定义一个Map def map=["key1":"hello","key2":"groovy","key3":true]//打印集合size
println map.size()
//打印集合中的数据
map.forEach{
key,value->
println “
k
e
y
:
key :
key:value”
}
// 取元素
println map[‘key1’]
// 添加元素
map[key4] = ‘ggsmida’
<h2 id=_link_7> 7. Groovy 类 </h2>
class Student {
int StudentID
String StudentName
static void main(String[] args) {
Student st = new Student()
st.StudentID = 1
st.StudentName = “Joe”
}
}
- 表达式后面的分号可选
- 每个类,构造方法和方法默认是public的
- groovy编译器自动加setter/getter方法,不需要自己去书写
- 类的属性可以直接使用点(.)来获取,底层都是用getter/setter方法
<h2 id=_link_8> 8. 方法 </h2>
def methodName() {
//Method code
}
//方法可以接收任意数量的参数。定义参数时,不必显式定义类型。可以添加修饰符,如public,private和protected
def methodName(parameter1, parameter2, parameter3) {
// Method code goes here
}
// 当然也可以显示指明它的数据类型和默认值
def methodName(parameter1, parameter2, int parameter3 = 7) {
// Method code goes here
}
// 方法返回值
//在Groovy中,方法体中的最后一个表达式的值会被作为返回值。这意味着return语句是可选的
int sum(int a, int b = 5) {
int c = a + b
return c
}
void printSum(int a, int b = 5) {
int c = a + b
print c
}
<h2 id=_link_9> 9. 闭包 </h2>
//定义一个闭包 ,记得要用{}包裹起来
def aClosure={
int a,int b-> //-> 箭头前面代表的是参数,后面是执行语句
a+b //返回值
}
println aClosure(1,2)
// 闭包作为参数
def static Display(clo){
println clo.call(1,2)
}
Display(aClosure)