📜  Groovy 和Java 的区别

📅  最后修改于: 2021-09-12 10:47:29             🧑  作者: Mango

Groovy是一种强大的、可选类型的动态语言,用于在Java平台上开发应用程序,其语法类似于Java 。它的打字纪律是强的,静态的和动态的。 Groovy最好的地方在于,因为它扩展了 JDK,所以它接受Java代码。 Groovy既可以用作编程语言,也可以用作脚本语言。 GroovyJava的超集,这意味着Java程序将在Groovy环境中运行,反之亦然。而Java是强静态类型的编程语言。

  1. 默认导入:
    • Groovy中,默认情况下会导入一些通用包和类:
      • Java的.IO。*
      • Java的.lang。*
      • Java.math.BigDecimal
      • Java.math.BigInteger
      • Java.*
      • Java的.util。*
      • groovy.lang.*
      • groovy.util.*
    • Java,默认情况下只有Java.lang.* 包导入。
  2. 额外关键词:
    • asdefintrait这些是Groovy中的额外关键字。
    • 您不能将此关键字用作变量名。
  3. 默认访问修饰符:
    • Java,默认访问修饰符是包,即如果您没有为字段、方法或类指定访问修饰符,它将成为包私有的。
    • Groovy 中,它默认为public
  4. 吸气剂和吸气剂:
    • Java,您需要为字段提供 getter 和 setter 方法,特别是如果您遵循Java Beans 命名约定并使用工具和库,这些工具和库使用反射来动态访问和更改 bean 属性。
    • Groovy 中,会为类成员自动生成 getter 和 setter。
  5. 点分隔符:
    • Java,我们使用点运算符(.) 来访问类的属性
    • Groovy还支持点运算符,但与Java调用不同的是,它实际上通过 getter 和 setter 进行,后者是在Groovy 中自动生成的
    Test test = new Test()
    test.testMessage = "Hello World"

    将从 Test 类调用 mutator setTestMessage(String message)。

  6. Groovy 中,分号(;)是可选的,仅当您喜欢或希望在一行中编写多个语句时才使用它们。
  7. 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"]

总结JavaGroovy的区别

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