现在的Android开发默认是基于Gradle进行打包构建的。Gradle的好处不言而喻,回头我会用另一篇文章说明。这篇文章主要说的是Gradle的编程语言Groovy。
Groovy是由JVM来解释执行的,所以它的大部分语法与Java类似,但是也有一些语法糖要优于Java。我们现在就来聊聊Groovy与Java之间有哪些不同。
变量
变量的类型:只有对象类型
变量的定义:不仅有Java的强类型,还有用def定义的弱类型
字符串
String、GString
闭包
概念:一个代码块。
定义:
def closer = { println ‘Hello groovy!’}
调用:
clouser.call()
clouser()
参数:
def closer = { String name, int age -> println ‘Hello ${name}, my age is ${age}’}
clouser(‘groovy!’, 4)
def clouser = { println “Hello ${it}”} // 隐式参数
clouser(‘groovy!’)
返回值:
def clouser = { return “Hello ${it}”}
def result = clouser(‘groovy!’)
println result
数据结构
数组:
def array = [1, 2, 3, 4, 5] as int[]
int[] array = [1, 2, 3, 4, 5]
列表:
def list = new ArrayList() //java
def list = [1, 2, 3, 4, 5] //groovy
list.sort() // groovy排序
list.sort { a, b -> a == b ? 0 : Math.abs(a) < Math.abs(b) ? -1 : 1 } // groovy自定义排序规则
映射:
def map = new HashMap() // java
def colors = [red:’ff0000’, green: ‘00ff00’, blue:’0000ff’]
println colors[‘red’] // 索引方式
println colors.red // 索引方式
colors.yellow = ‘ffff00’ // 添加同类型的元素
colors.complex = [a:1, b:2] // 添加不同类型的元素
范围:Java底层实现为List
def range = 1..10 //定义范围
println range[0] //索引方式
println range contains(10) // 判断是否包含某个值
println range.from // 索引起始值
println range.to // 索引终止值
range.each { // 遍历
println it
}
面向对象
默认所有类型都是public的,所以不用写public。除此之外,定义class和interface与Java一样。
def person = new Person(name:’Amy’, age : 26)