Groovy是一种强大的、可选类型的动态语言,用于在Java平台上开发应用程序,其语法类似于Java 。它的打字纪律是强的,静态的和动态的。 Groovy最好的地方在于,因为它扩展了 JDK,所以它接受Java代码。 Groovy既可以用作编程语言,也可以用作脚本语言。 Groovy是Java的超集,这意味着Java程序将在Groovy环境中运行,反之亦然。而Java是强静态类型的编程语言。
- 默认导入:
- 在Groovy中,默认情况下会导入一些通用包和类:
- Java的.IO。*
- Java的.lang。*
- Java.math.BigDecimal
- Java.math.BigInteger
- Java.*
- Java的.util。*
- groovy.lang.*
- groovy.util.*
- 在Java,默认情况下只有Java.lang.* 包导入。
- 在Groovy中,默认情况下会导入一些通用包和类:
- 额外关键词:
- as 、 defin 、 trait这些是Groovy中的额外关键字。
- 您不能将此关键字用作变量名。
- 默认访问修饰符:
- 在Java,默认访问修饰符是包,即如果您没有为字段、方法或类指定访问修饰符,它将成为包私有的。
- 在Groovy 中,它默认为public 。
- 吸气剂和吸气剂:
- 在Java,您需要为字段提供 getter 和 setter 方法,特别是如果您遵循Java Beans 命名约定并使用工具和库,这些工具和库使用反射来动态访问和更改 bean 属性。
- 在Groovy 中,会为类成员自动生成 getter 和 setter。
- 点分隔符:
- 在Java,我们使用点运算符(.) 来访问类的属性
- Groovy还支持点运算符,但与Java调用不同的是,它实际上通过 getter 和 setter 进行,后者是在Groovy 中自动生成的
Test test = new Test() test.testMessage = "Hello World"
将从 Test 类调用 mutator setTestMessage(String message)。
- 在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); }
- 由于在我们使用 for 循环的大多数任务中,在Groovy 中声明 for 循环要容易得多,我们可以将 for 循环声明为
- 安全导航运营商:
- 在Java,我们必须执行一些操作来检查空对象,以避免空指针异常。
String str = null; if(str != null){ System.out.println(str.reverse()); }
- 但是在Groovy 中我们可以直接做如下操作
println str.reverse()
- 在Java,我们必须执行一些操作来检查空对象,以避免空指针异常。
- main() 方法:
- 在Java,您需要 main 方法来使类可执行
- 在Groovy 中,您不需要它。由于Groovy是一种脚本语言,因此每个程序都会自动有一个称为 Script 的包装类。
- 布尔评估:
Groovy自动将表达式计算为布尔值。
def str = “test” if(str){ println str }
- 数组声明:
- 如果要在Java创建字符串数组,则必须使用大括号“{}”。
在Java:
String[] testArray = {"A", "B", "C"};
- 而在Groovy 中,我们可以使用方括号。 “[]”。
在Groovy 中:String[] testArray = ["A", "B", "C"]
- 如果要在Java创建字符串数组,则必须使用大括号“{}”。
总结Java和Groovy的区别
Java | Groovy |
---|---|
It is developed on JDK and is run on JVM | It is compiled to JVM Byte code and It is compatible with Java platform |
It is used as programming and object oriented Language | It is used as both programming and scripting Language |
In Java default access modifier package | In Groovy default access modifier public |
In Java, you need to provide getters and setters method for fields, especially if you are following Java Beans naming convention | In Groovy, getters and setters are automatically generated for class members |
In Java semicolons are compulsory | In Groovy semicolons are optional |
In Java only Java.lang.* package is imported by default | In Groovy commonly used packages are imported by default |
Java has primitive data types and wrapper classes to perform boxing and unboxing implicitly or explicitly | In Groovy everything is object and uses only object hence no concept of autoboxing or unboxing |
Java has a requirement of the main method inside a class to run the program | Groovy does not require any main method or entry point of a method to run the class or any program |