什么是Groovy
Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面相对象的编程语言,既可以用于面相对象编程,又可以用作纯粹的脚本语言。使用该种语言不必写过多的代码,同时又具有闭包和动态语言中的其它特性。
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。
Groovy与Java比较
特点
- Groovy完全兼容Java的语法
- 分号是可选的
- 类、方法默认是public的
- 编译器给属性自动添加Getter/Setter方法
- 属性可以直接用点号获取
- 最后一个表达式的值会被作为返回值
- Java中
==
比较的是两个对象的内存地址是不是同一个对象,而在Groovy中==
等同于equals(),不会有NullPointerExceptions
示例代码
public class Cat{
private String name
public Cat(String name){
this.name = name
}
}
Cat cat = new Cat('波斯猫')
println cat.name
Cat cat2 = null
println cat2 == cat
显示结果
Groovy的高效特性
- assert语句
在任何地方都可以进行断言操作
执行语句:
assert true
执行结果:
执行语句:
assert false
执行结果:
- 可选类型定义
类型是可选的,相当于一个弱类型的编程语言直接def
跟变量名即可,而变量的类型是根据后面的操作推导出来的
示例语句:
def flag = true
def name = '张三'
- 可选的括号:
调用方法后面如果有参数的话,其括号是可以不写的
执行语句:
def name = '张三'
println(name)
println name
执行结果:
- 字符串
字符串有三种表示形式:分别是单引号、双引号、以及三个引号。
执行语句
def s1 = 'World!'
def s2 = "Hello ${s1}"
def s3 = '''hell
world!'''
println s1
println s2
println s3
执行结果:
从上面我们可以看出,单引号中的内容可以直接显示,双引号中的内容可以传参,三引号中的内容可以换行。
- 集合API
List、Map在Groovy中有更简单的写法
List集合
执行语句
def list = ['张三','李四']
list << '王五'
assert list.size() == 3
assert list.getClass() == ArrayList
Iterator iterator = list.iterator()
while(iterator.hasNext()){
println iterator.next()
}
执行结果
Map集合
执行语句
def map = [id : 1,name : '张三']
map.age = 20
Iterator iterator = map.keySet().iterator()
while (iterator.hasNext()){
println map[iterator.next()]
}
执行结果
- 闭包(closurs)
闭包在groovy中是一个处于代码上下文中的开放的,匿名代码块。它可以访问到其外部的变量或方法。
执行语句
def c = { v -> println v}
def method(Closure closure){
closure('hello')
}
method(c)
执行结果
参考来源:Groovy百度百科