Groovy 与 Java 核心区别
-
变量定义:在 Groovy 中可以用
def定义无类型的变量(定义变量方面def与 Java 中的var相似),和返回值为无类型的方法,而在 Java 中没有def。 -
运算符重载:Java 中的
equals方法对应 Groovy 中的==,而 Java 中的==(判断是否引用同一对象)对应 Groovy 中的is方法。 -
数组定义:Java 中的数组定义
int[] a = {1, 2, 3};,在 Groovy 写成int[] a = [1, 2, 3]。 -
循环结构:Java 中的 for 循环
for (int i = 0; i < len; i++) {...},在 Groovy 中还可以写成for (i in 0..len-1) {...}或者for (i in 0..<len) {...}。 -
返回值:Java 中的方法返回写为
return;或者return obj;,在 Groovy 的方法中return是可选的。 -
内部类:Java 中的 inner class 即内部类,在 Groovy 中用 Closure 实现(Closure 概念类似 Java 后续引入的 Lambda 特性,比 inner class 在语义方面更完善)。
-
注释:Groovy 中的注释比 Java 多了首行注释
#!,其他与 Java 相同,比如单行注释//、多行注释/* */或者是支持 Javadoc 的/** */。 -
增强 for 循环:Java 5 中的 for-each
for (Type t : iterable) {...},在 Groovy 中,for (t in iterable) {...}。 -
Switch 语句:Groovy 中的 switch 语句与 Java 中相同,不过支持更多类型了,比如 String。
-
While 语句:Groovy 的 while 语句跟 Java 相同,但废弃了 do-while(考虑到语义方面的问题,而且 do-while 可以用其他形式的循环语句代替,使用频率低)。
-
字符串表示:Java 中的 String 常量表示为 "Hello, 示例",在 Groovy 中可如下表示 "Hello, 示例",'Hello, 示例',"""Hello, 示例"""(多行),'''Hello, 示例'''(多行),
def name="示例","Hello, ${name}" 或 "Hello, $name"。 -
类与方法定义:在 Groovy 中定义类,定义方法与 Java 中定义类相同,唯一区别在于 Groovy 中类属性默认是 private 但会自动生成 get/set 方法供外部使用,方法默认是 public 的,而在 Java 中默认是 package 的。另外,在 Groovy 中可以用
def来定义方法。 -
对象创建:在 Java 写为
Thought t = new Thought();,在 Groovy 也可以这样写,不过还多了种写法:def t = new Thought()。 -
静态方法调用:在 Java 和 Groovy 中相同,即 。

