Groovy基础入门

一、Groovy简介

Groovy是运行在JVM中的一种动态语言,可以在Java平台上进行编程,使用方式基本与使用Java代码的方式相同,它的语法与Java语言的语法很相似,与Java相比,Groovy更加灵活、简洁,而且完成同样的功能基本上所需要的Groovy代码量会比Java的代码量少,它还增加了很多功能,如:函数式编程、运行时的灵活性以及许多元编程内容。它可以用来构建一个完整的工程,或者作为一个Module,第三方集成到Java代码中。甚至可以作为脚本在执行时动态编译。

官网:https://groovy-lang.org/index.html

二、Groovy的Hello World程序

1. 下载安装groovy环境

到官网下载groovy的sdk,我这里下载的是4.0.20版本,解压到指定的文件夹

配置groovy到系统环境变量中:

GROOVY_HOME:D:\SoftWare\dev\groovy-4.0.20
PATH: %GROOVY_HOME%\bin

设置好环境变量,打开命令行执行命令:groovy -v或者groovy -version命令,看到版本号,则说明环境配置好了
在这里插入图片描述

2.创建HelloWord项目

idea创建demo项目,创建时选择语言为Groovy,SDK为刚才安装的目录
在这里插入图片描述
新建一个类:HelloGroovy.groovy文件,并编写main方法,执行程序,可以看到控制台的输出结果
在这里插入图片描述

三、Groovy基础语法

简单的打印语句

可以直接使用println来打印语句

println "Hello, Groovy!"

def 定义无类型的变量

我们无需显式地声明变量的类型,Groovy 会根据赋给变量的值自动推断其类型

def name = "Even"  
def age = 20  
println "Name: $name, Even: $age"

字符串操作

Groovy的字符串支持模板化,可以使用${}来插入变量值:

def greeting = "Hello"  
def person = "Bob"  
println "${greeting}, ${person}!"

值与引用比较

Groovy中的 == 对应于Java中使用 equals() 方法
Groovy中的 is 对应于Java中使用 == 进行对象引用比较

```java
String name1  =   "Alice"
String name2  =   new  String( "Alice" )
if  (name1   ==  name2) {//  Java中写为 name1.equals(name2)
    System.out.println( " equal " );
}  else  {
    System.out.println( " not equal " );
}
if  (name1.is(name2)) {//  Java中写为 name1  == name2
    System.out.println( " identical " );
}  else  {
    System.out.println( " not identical " );
}
// 对应输出结果为:
equal 
not identical 

数组和循环

Groovy使用[]来创建列表,并支持使用for-in循环遍历数组元素:

def fruits = ["apple", "banana", "cherry"]  
for (fruit in fruits) {  
    println fruit  
}

方法定义和调用

def greet(name) {  
    println "Hello, $name!"  
}  
  
greet("Groovy")

在Groovy的方法中return是可选的

public  String sayHello() {
   return   " Hello, Groovy "
}
// 或者
public  String sayHello() {
   " Hello, Groovy "
}

Groovy 中的方法参数可以具有默认值

// 定义一个带有默认参数的方法
def greet(name = "World") {
    println "Hello, $name!"
}

// 调用方法,不提供参数
greet()

// 调用方法,提供参数
greet("Alice")

注释

Groovy中的注释比Java多了首行注释#!,其他与Java相同比如单行注释:// 多行注释:/* / 或者是 支持javadoc的/* */

#! 首行 注释
/*
 * 多行注释
  */
/**
 * javadoc 注释
  */
//  单行注释

闭包(lambda表达式)

Groovy支持闭包,在 Groovy 中,闭包是一种特殊的对象,它可以被存储在变量中、作为参数传递给方法或者赋值给其他变量。闭包可以捕获其定义时的上下文环境,包括外部变量和方法的引用。我们可以把它看做是一个匿名的函数,可以接收参数,并可以有返回值,通常使用花括号 {} 来定义

// 定义一个简单的闭包
def sayHello = { name ->
    println "Hello, $name!"
}

// 调用闭包
sayHello("Alice")
sayHello("Bob")

默认导包

Groovy默认导入了一些常用的包,我们无需显式导入它们

以下的包均为默认导入的包
groovy.lang.*
groovy.util.*
java.lang.*
java.util.*
java.io.*
java.net.*
java.math.BigDecimal
java.math.BigInteger

四、Java集成Groovy

在Java中使用Groovy有三种方式:通过GroovyShell执行Groovy脚本;通过GroovyClassLoader动态加载Groovy Class文件;通过GroovyScriptEngine脚本引擎加载Groovy脚本。

1. 使用GroovyShell执行Groovy脚本

1)引入依赖

<!-- https://mvnrepository.com/artifact/org.apache.groovy/groovy -->
<dependency>
    <groupId>org.apache.groovy</groupId>
    <artifactId>groovy</artifactId>
    <version>4.0.20</version>
</dependency>

2)定义脚本内容并执行

import groovy.lang.Binding;
import groovy.lang.GroovyShell;

public class GroovyShellExample {
    public static void main(String[] args) {
        // 创建一个Binding对象,用于绑定变量
        Binding binding = new Binding();
        binding.setVariable("name", "Groovy");

        // 创建GroovyShell实例
        GroovyShell shell = new GroovyShell(binding);

        // 执行Groovy脚本
        Object result = shell.evaluate("println('Hello, ' + name + '!'); return name.length();");

        // 输出结果
        System.out.println("Script result: " + result);
    }
}

在调用含有入参的脚本的时候,参数的传递是通过Binding来完成的。

2.GroovyClassLoader动态加载Groovy Class文件

Groovy类(GroovyClass.groovy):

class GroovyClass {  
    String greet(String name) {  
        return "Hello, " + name + "!"  
    }  
}

调用示例

import groovy.lang.GroovyClassLoader;  
import groovy.lang.GroovyObject;  
  
public class GroovyMethodCallExample {  
    public static void main(String[] args) throws Exception {  
        // 创建GroovyClassLoader实例  
        GroovyClassLoader loader = new GroovyClassLoader();  
  
        // 加载Groovy类  
        Class<?> groovyClass = loader.parseClass(new File("GroovyClass.groovy"));  
  
        // 创建Groovy类的实例  
        GroovyObject groovyObject = (GroovyObject) groovyClass.getDeclaredConstructor().newInstance();  
  
        // 调用Groovy方法  
        String greeting = (String) groovyObject.invokeMethod("greet", "World");  
  
        // 输出结果  
        System.out.println(greeting);  
    }  
}

相关推荐

  1. Groovy 基础学习1

    2024-03-29 12:40:01       43 阅读
  2. Groovy介绍和使用

    2024-03-29 12:40:01       40 阅读
  3. Groovy语言学习

    2024-03-29 12:40:01       51 阅读
  4. 机器学习基础入门

    2024-03-29 12:40:01       55 阅读
  5. React基础知识入门

    2024-03-29 12:40:01       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 12:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 12:40:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 12:40:01       82 阅读
  4. Python语言-面向对象

    2024-03-29 12:40:01       91 阅读

热门阅读

  1. 使用 Kotlin 和 Groovy 构建配置的一些细微差别

    2024-03-29 12:40:01       38 阅读
  2. Elasticsearch相关问题

    2024-03-29 12:40:01       44 阅读
  3. ES 嵌套对象数据问题

    2024-03-29 12:40:01       42 阅读
  4. 面试算法-125-除自身以外数组的乘积

    2024-03-29 12:40:01       35 阅读
  5. 【OpenModelica】4命令行大全

    2024-03-29 12:40:01       42 阅读
  6. .jayy勒索病毒来袭:如何有效防范与应对?

    2024-03-29 12:40:01       40 阅读
  7. 【ssh免密设置】

    2024-03-29 12:40:01       41 阅读