• Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1



    由于本文默认你有Java基础所以我会写的很简单

    Groovy概述

    文档地址

    http://www.groovy-lang.org/

    Apache Groovy 是一个 强大的 、 可选类型 和 动态 具有 静态类型和静态编译 用于 Java 平台的 旨在通过简洁、 熟悉且易于学习 语法 。 它可以与任何 Java 程序顺利集成,并立即交付给您的应用程序 强大的功能,包括脚本功能、 领域特定语言 创作、 运行时和编译时 元编程 和 函数编程。

    优点

    1. 易于Java开发人员学习
    2. 具有强大功能(闭包,构建器,函数式编程等)
    3. Java集成
    4. 灵活扩展,先进的集成和定制机制
    5. 强大的丰富的生态(Web 开发、响应式应用程序、并发/异步/并行库、测试 框架、构建工具、代码分析、GUI构建 )
    6. 易开发脚本(非常适合编写简洁和可维护的测试,以及所有构建和自动化任务 )
    7. Java插件编写支持

    下载Groovy

    https://groovy.apache.org/download.html

    Groovy需求

    Groovy 4.0 需要 Java 8+,最高支持 Java 16

    Groovy安装

    解压打开即可,可以不配环境变量
    在这里插入图片描述

    IDEA中构建Groovy项目

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    Groovy基础使用

    1. Groovy完全兼容Java
    2. 在一个groovy文件中可以混合类的定义和脚本定义。此时不要再定义一个和文件同名的类
    3. groovy中使用def定义变量、方法,不建议使用具体的数据类型
    4. groovy中的注释:单行注释用川,多行注释用:/**/
    5. Groovy中语句末尾的分号是可以省略的,以换行作为结束。
    6. 默认类、方法、字段都是public修饰的

    基础语法

    1.构建Groovy类

    在这里插入图片描述

    2.构建Groovy脚本

    与Groovy类不同的是我们需要删除class

    3.混合定义类与脚本

    类与脚本可以同时存在,测试类的名称不能和文件名相同
    在这里插入图片描述

    println("hello world")
    
    class test{
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.定义变量已经方法返回值

    使用def声明

    class test{
        def name;
        def pwd;
    
        private def getName(){
          
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.注释

    单行://
    多行:/**/

    6.默认类,方法,字段用public修饰

    7.无需使用;分割结尾(但我习惯使用)

    8.字符串使用单引号

    这是常规使用,没什么特别的

    9.字符串使用双引号

    作为引用变量${},有运算能力

    10.字符串使用三引号

    模板字符串,支持换行

    11.在类中默认生成set和get方法

    Test1类

    package cn.test
    
    class Test1 {
        def username = "zhangsan";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    测试脚本

    package cn.test
    
    def test1 = new Test1()
    println(test1.getUsername())
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    12.Groovy可直接运行

    在这里插入图片描述
    在这里插入图片描述

    13.在方法中return可以不写,默认最后一行为返回

    14.关键字

    在这里插入图片描述

    15.转义字符

    在这里插入图片描述

    16.三双号字符串

    结合三单号字符串和双引号字符串,可换行模板并设置插值有运算能力

    """ word """
    
    • 1

    17.数字类型后缀

    在这里插入图片描述

    18.List

    Groovy 列表是普通的 JDK java.util.List,因为 Groovy 没有定义自己的集合类。 定义列表文字时使用的具体列表实现默认是 java.util.ArrayList

    def list = [1,2,3,4]
    
    • 1

    19.as指定类型

    这样就从Number转化为String了

    def salary = 169.8 as String
    
    • 1

    20.数组

    String[] arrStr = ['Ananas', 'Banana', 'Kiwi']
    
    • 1

    21.map

    def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']
    //当然你也可以像下面这样
    def map = new HashMap()
    map.put("name","zhangsan")
    println(map.get("name"))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    22.算术运算符

    运算符说明
    +
    -
    *
    /
    %取余
    **

    23.赋值运算符

    1. =
    2. +=
    3. -=
    4. *=
    5. /=
    6. %=
    7. **=

    24.关系运算符

    在这里插入图片描述

    25.逻辑运算符

    1. &&:逻辑和
    2. ||:逻辑或
    3. !:逻辑否

    26.按位运算符

    1. &: 按位“和”
    2. |: 按位“或”
    3. ^: 按位“异或”(异或“或”)
    4. ~: 按位求反
    int a = 0b00101010
    assert a == 42
    int b = 0b00001000
    assert b == 8
    assert (a & a) == a                     
    assert (a & b) == b                     
    assert (a | a) == a                     
    assert (a | b) == a                     
    
    int mask = 0b11111111                   
    assert ((a ^ a) & mask) == 0b00000000   
    assert ((a ^ b) & mask) == 0b00100010   
    assert ((~a) & mask)    == 0b11010101 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    27.位移运算符

    1. <<: 左移
    2. >>: 右移
    3. >>>: 右移无符号

    28.三元运算符

    和Java一样

    a > 0 ? a : b
    
    • 1

    29.方法指针运算符

    相当于直接调用方法

    方法指针运算符 ( .&) 可用于在变量中存储对方法的引用, 为了以后调用它:

    def str = 'example of method reference'            
    def fun = str.&toUpperCase   
    
    • 1
    • 2

    使用方法指针有很多优点。 首先,这种方法指针的类型是 一个 groovy.lang.Closure, 所以它可以在任何需要使用闭包的地方使用

    def transform(List elements, Closure action) {                    
        def result = []
        elements.each {
            result << action(it)
        }
        result
    }
    String describe(Person p) {                                       
        "$p.name is $p.age"
    }
    def action = this.&describe                                       
    def list = [
        new Person(name: 'Bob',   age: 42),
        new Person(name: 'Julia', age: 35)]                           
    assert transform(list, action) == ['Bob is 42', 'Julia is 35']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    30.if判断

    if(){
    
    }else if(){
    
    }else{
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    31.循环

    for

    for (int i = 0; i < 5; i++) {
        message += 'Hi '
    }
    
    • 1
    • 2
    • 3

    for in

    def x = 0
    for ( i in 0..9 ) {
        x += i
    }
    
    • 1
    • 2
    • 3
    • 4

    while

    def x = 0
    def y = 5
    
    while ( y-- > 0 ) {
        x++
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    do while

    def count = 5
    def fact = 1
    do {
        fact *= count--
    } while(count > 1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    32.try catch

    try{
    	...
    }catch(...){
    ...
    }finally{
    ....
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    常规使用案例1

    Test1类

    package cn.test
    
    class Test1 {
        //注释
        def des = "zhangsan"
        def username = "define user name : ${des}"
        def pwd = '12345'
        def word = '''word1
    word2'''
    
        def combine(def str){
            username = str + username
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    测试脚本

    package cn.test
    
    def test =  new Test1()
    println(test.username)
    println(test.pwd)
    println(test.word)
    println(test.getUsername())
    println(test.getWord())
    println(test.combine("username:"))
    println(test.combine('''username is :'''))
    println(test.combine('user is:'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

  • 相关阅读:
    华为云API自然语言处理的魅力—AI情感分析、文本分析
    一文理清JVM结构
    iObjects C++许可模块划分
    Jetson 设备docker全局代理映射方法以及迁移到ssd硬盘
    JAVA8新特性-Stream
    关于CW32单片机pack包安装 KEIL IAR
    基于知识问答的上下文学习中的代码风格11.20
    HTML进阶(3)- 表单元素
    漏洞预警|CVE-2023-38545 Curl 和 libcurl 堆缓冲区溢出漏洞
    如何保养维护实验室超声波清洗机
  • 原文地址:https://blog.csdn.net/qq_51553982/article/details/126080660