1.在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法
class Man {
def name = "十里桃花"
def introduce() { return "三生三世" // return可以省略 }
}
2.Java中的equals方法对应Groovy中的== , 而Java中的==(判断是否引用同一对象)对应Groovy中的is方法
3.Java中的数组定义int[] a = {1, 2, 3}; 在Groovy写成int[] a = [1, 2, 3]
4.Java中的for循环for (int i = 0; i < len; i++) {...} 在Groovy中还可以写成for (i in 0..len-1) {...} 或者 for (i in 0..<len){...}
5.Groovy中的注释比Java多了首行注释#!,其他与Java相同比如单行注释:// 多行注释:/* */ 或者是 支持javadoc的/** */
6.Java5中的for-each:for (Type t : iteratable) {...} 在Groovy中,for (t in iteratable) {...}
7.在Groovy中定义类,定义方法与Java中定义类相同,唯一区别在于Groovy中类,属性以及方法默认都是public的,而在Java中默认是package的
8.Hash常量(类型为java.util.HashMap)在Java没有,在Groovy中表示为 def frequence = ["the": 5, "hello": 2, "world": 2]
9.在varargs方法方面,Groovy比Java多一种表达方式,如下所示:
//与Java中写法相同
def varargsMethod(Type... args){
//....do something
}
//groovy还可以用[ ]代替... ,反应出varargs的本质
def varargsMethod(Type[ ] args){
//。。。
}
10.方法的默认参数,Groovy中表示如下:
class Hello{
//如果没有参数传入,默认打印出hello,狗子
def greet(name="狗子");
println("Hello,$name"); //也可以省略括号
}
11.Groovy不仅有? :三元操作符,还有?:两元操作符,但Java只有? :三元操作符。
12.引用当前对象,Groovy和Java相同,在Java中用this表示,在Groovy中也用this表示,而且在Groovy中,this可以出现在static范围中,指向所在类的类对象,本例中,this等同于ThisInStaticScope.class(Java写法)或ThisInStaticScope(Groovy写法)
13.closure中的delegate ,closure中的delegate类似于类中的this
闭包是一种传递执行代码块的强大方法。可以把闭包看作Java中的匿名内类,但是只有单一的(匿名)方法。闭包用"{}"括起,"->"前面是参数,如果有多个参数用逗号隔开。如果只有一个参数,可以省略前面的参数和"->",而使用缺省的参数"it"。