Groovy 是一种强大的、可选类型的动态语言,用于在其语法类似于 Java 的 Java 平台上开发应用程序。它的打字规则是强大的、静态的和动态的。Groovy 最好的地方在于,由于它扩展了 JDK,它接受了 Java 代码。Groovy 既可以用作编程语言,也可以用作脚本语言。Groovy 是 Java 的超集,这意味着 Java 程序将在 Groovy 环境中运行,反之亦然,也可能不可能。而 Java 是强类型和静态类型的编程语言。
1. 默认导入:
在 Groovy 中,默认会导入一些通用包和类:
java.io.*
java.lang.*
java.math.BigDecimal
java.math.BigInteger
java.net.*
java.util.*
groovy.lang.*
groovy.util.*
在 Java 中,默认情况下仅导入 java.lang.*
包。
2. 额外关键词:as
, define
, trait
这些是 Groovy 中的额外关键字。不能将此关键字用作变量名。
3. 默认访问修饰符:
在 Java 中,默认访问修饰符是包,即如果没有为字段、方法或类指定访问修饰符,它就会变成包私有。
在 Groovy 中,它默认是公共的。
4. Getter 和 Setter:
在 Java 中,需要为字段提供 getter
和 setter
方法,特别是如果遵循 Java Beans 命名约定并使用工具和库,它们使用反射来动态访问和改变 bean 属性。在 Groovy 中,为类成员自动生成 getter 和 setter。
5. 点分隔符:
在 Java 中,我们使用点运算符 (.
) 来访问类的属性
Groovy 还支持点运算符,但与 Java 调用不同的是,它实际上通过 getter 和 setter,它们在 Groovy 中自动生成。
- 在 Groovy 中,分号 (;) 是可选的,仅当您喜欢或想要在一行中编写多个语句时才使用它们。
- for循环:
与在大多数任务中使用for
循环一样,在 Groovy 中声明for
循环要容易得多,可以将for
循环声明为:for(j in 0..4){ print j } 0.upto(3) { print "$it" } 4.times{ print "$it" }
在Java中的写法:
for(int i=0;i<=5;i++){ System.out.println(i); }
8. 安全导航操作员:
在 Java 中必须执行一些操作来检查空对象,以避免空指针异常。
String str = null; if(str != null){ System.out.println(str.reverse()); }
但是在 Groovy 中,可以直接执行以下操作:
println str.reverse()
9. main() 方法:
在 Java 中,需要 main 方法来使类可执行
在 Groovy 中,不需要它。由于 Groovy 是一种脚本语言,因此每个程序都会自动有一个名为 Script 的包装类。
10.布尔求值:
Groovy 自动将表达式计算为布尔值。
def str = “test” if(str){ println str }
11. 数组声明:
如果要在 Java 中创建字符串数组,则必须使用花括号{}
。
在 Java 中:
String[] testArray = {"A", "B", "C"};
而在 Groovy 中,可以使用方括号: []
。在 Groovy 中:
String[] testArray = ["A", "B", "C"]
Java和Groovy的比较区别
Java | Groovy |
---|---|
它是在JDK上开发并在JVM上运行的 | 编译为JVM字节码,兼容Java平台 |
它被用作编程和面向对象的语言 | 它被用作编程和脚本语言 |
Java 默认访问修饰符包 | Groovy 默认访问修饰符 public |
在 Java 中,您需要为字段提供 getter 和 setter 方法,特别是如果遵循 Java Beans命名约定 | 在 Groovy 中,会为类成员自动生成 getter 和 setter |
在 Java 中,分号是强制性的 | 在 Groovy 中,分号是可选的 |
Java中默认只导入Java.lang.* 包 |
在Groovy中默认导入常用包 |
Java 具有原始数据类型和包装类来隐式或显式执行装箱和拆箱 | 在 Groovy 中,一切都是对象并且仅使用对象,因此没有自动装箱或拆箱的概念 |
Java 需要类内部的 main 方法来运行程序 | Groovy 不需要任何 main 方法或方法的入口点来运行类或任何程序 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264445.html