Groovy 和 Java 的区别

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 中,需要为字段提供 gettersetter 方法,特别是如果遵循 Java Beans 命名约定并使用工具和库,它们使用反射来动态访问和改变 bean 属性。在 Groovy 中,为类成员自动生成 getter 和 setter。

5. 点分隔符:

在 Java 中,我们使用点运算符 (.) 来访问类的属性
Groovy 还支持点运算符,但与 Java 调用不同的是,它实际上通过 getter 和 setter,它们在 Groovy 中自动生成。

  1. 在 Groovy 中,分号 (;) 是可选的,仅当您喜欢或想要在一行中编写多个语句时才使用它们。
  2. 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的比较区别

JavaGroovy
它是在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

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论