现在的Android开发默认是基于Gradle进行打包构建的。Gradle的好处不言而喻,回头我会用另一篇文章说明。这篇文章主要说的是Gradle的编程语言Groovy。
Groovy是由JVM来解释执行的,所以它的大部分语法与Java类似,但是也有一些语法糖要优于Java。我们现在就来聊聊Groovy与Java之间有哪些不同。
![9c153d9d8c586b3146fffdc4e1c1fdc8.png](https://i-blog.csdnimg.cn/blog_migrate/98c0e40b6c3952ba5e41fd4395ae66ae.jpeg)
变量
变量的类型:只有对象类型
变量的定义:不仅有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() //javadef list = [1, 2, 3, 4, 5] //groovylist.sort() // groovy排序list.sort { a, b -> a == b ? 0 : Math.abs(a) < Math.abs(b) ? -1 : 1 } // groovy自定义排序规则
映射:
def map = new HashMap() // javadef 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)