1、Default imports,默认情况下,导入下面的包:
java.io. *
java.lang。*
java.math.BigDecimal中
java.math.BigInteger中
java.net.*
java.util中.*
groovy.lang.*
groovy.util.*
2、Multi-methods,groovy在运行时根据参数的类型选择要调用的方法,称为运行时调度,而java中在编译时。
3、groovy中{...}被用于闭包,所以声明数组要使用 [] 比如:int[] array = [1,2,3]。
4、Package scope visibility,在groovy中省略成员变量修饰符不会导致像java一样包范围内可见,他会创建属性自动关联get和set方法。
可以通过@PackageScope注解创建包私有字段。
5、groovy中不支持java7的ARM,他使用依赖于闭包的各种方法。
new File('/path/to/file').eachLine('UTF-8') {
println it
}
6、内部类
7、lambdas:java8支持lambda和方法引用,groovy不支持。
8、GStrings
9、字符串:groovy中单引号字符串是String类型,双引号字符串看是不是有插值,有插值则是GString类型。三重单引号字符串是普通的java.lang.String。
10、包装类
11、在Java中==意味着对象的基本类型或标识的相等性。在Groovy ==中a.compareTo(b)==0,如果是Comparable, 则转换为a.equals(b)。
为了检查身份,有is。例如 a.is(b)。
12、额外的关键字:
as、def、in、trait