精华内容
下载资源
问答
  • groovy教程
    千次阅读
    2018-09-17 20:24:08

    概述

    Groovy 是一种基于Java平台的面向对象语言。Groovy 的语法和 Java 非常的相似,可以使用现有的 Java 库来进行 Groovy 开发。可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。
    用 Groovy 编写的任何内容都可以编译成标准的 Java 类文件并在 Java 代码中重用。类似地,用标准 Java 代码编写的内容也可以在 Groovy 中重用。所以,可以轻易地使用 Groovy 为 Java 代码编写单元测试。而且,如果用 Groovy 编写一个方便的小工具,那么也可以在 Java 程序中使用这个小工具。
    我们为什么要学习 Groovy 语言呢?
    Groovy 是一种更有生产力的语言。它具有松散的语法和一些特殊功能,能够加快编码速度。
    在 Android 开发中,我们会经常接触 Gradle,而前面博客中我们说过,Gradle 是一个使用 Groovy 语言实现的用于构建项目的框架,如果不懂 Groovy,你就不能说精通了 Gradle。
    前面介绍的几篇关于 Gradle 的博客中都有涉及到 Groovy,比如 Gradle 的配置和插件开发,那么现在再读 Grovvy 的介绍的文章,会有一种豁然开朗的感觉。
    Groovy 语言的一些特点:

    • Groovy 的松散的 Java 语法允许省略分号和 return 关键字。
    • 变量的类型和方法的返回值也是可以省略的。
    • 方法调用时,括号也是可以省略的。
    • 除非另行指定,Groovy 的所有内容都为 public。
    • Groovy 允许定义简单脚本,同时无需定义正规的 class 对象。
    • Groovy 在普通的常用 Java 对象上增加了一些独特的方法和快捷方式,使得它们更容易使用。
    • Groovy 语法还允许省略变量类型。

    官方网站
    Groovy API 文档:遇到不懂的类或者方法,这个是好帮手。

    运行环境

    我们可以安装 Groovy SDK 来设置运行环境,如果你不想麻烦,也可以在Android工程中运行 Groovy。

    在 build.gradle 中编写代码

    这一点在前面的博客 Gradle 使用指南 – Gradle Task 其实已经有所运用,即在里面创建一个 Task,然后在 Task 中编写 Groovy 代码即可。

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

     

    task hello {

    doFirst {

    println 'task hello doFirst'

    Student st = new Student()

    st.setStudentName("Joe")

    println(st.getStudentName());

    }

    }

    class Student {

    String StudentName;

    }

    然后运行 ./gradlew hello 命令即可。

    以插件的方式

    参考博客 Gradle 使用指南 – 创建Plugin

    在 build.gradle 中直接调用 Groovy 方法

    这一种方式是前面两种方式的结合,但是不用创建 gradle 插件。
    在 buildSrc 中创建 TestGroovy.groovy 文件:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

     

    package com.android.hq.myfirstplugin

    public class TestGroovy {

    public static void testGroovy() {

    Student st = new Student()

    st.setStudentName("James");

    println(st.getStudentName())

    }

    public static class Student {

    String StudentName;

    }

    }

    在 Task 中调用方法:

     

    1

    2

    3

    4

    5

    6

     

    task hello {

    doFirst {

    println 'task hello doFirst'

    TestGroovy.testGroovy()

    }

    }

    然后运行 ./gradlew hello 命令即可;

    Groovy 入门

    由于 Groovy 和 Java 极其的类似,因此,基本的语法规范就参考W3C school Groovy教程即可,下面只来介绍一下 Groovy 的一些新特性。

    变量类型定义和方法声明

    在 Java 中,变量是必须指定类型的,但是在 Groovy 中,所有的变量类型都可以用 def 去指定,Groovy 会根据对象的值来判断它的类型。

     

    1

    2

    3

    4

     

    def helloStr = "Hello World";

    def a = 1, b = 2

    println helloStr

    println a + b

    函数的的返回值的类型当然也可以用 def 来声明:

     

    1

    2

    3

     

    def getStr() {

    return "Hello World"

    }

    在声明函数时,参数变量的类型是可以省略的:

     

    1

    2

    3

     

    def add(arg1, arg2) {

    return arg1+arg2

    }

    前面我们说过,方法返回值的关键字 return 是可以省略的:

     

    1

    2

    3

     

    def add(arg1, arg2) {

    arg1+arg2

    }

    方法调用时括号是可以省略的,见 println a + b 的调用。
    在 Groovy 中,类型是弱化的,所有的类型都可以动态推断,但是 Groovy 仍然是强类型的语言,类型不匹配仍然会报错;

    上述两个类完全一致,只有有属性就有Getter/Setter;同理,只要有Getter/Setter,那么它就有隐含属性。

    字符串

    在Groovy中有两种风格的字符串:String(java.lang.String)和GString(groovy.lang.GString)。GString允许有占位符而且允许在运行时对占位符进行解析和计算。
    这里我们只介绍对占位符的一种使用:嵌入表达式

    嵌入表达式

     

    1

    2

    3

    4

     

    def worldStr = "World"

    def helloStr = "Hello ${worldStr}";

    println helloStr

    println "value: ${3+3}"

    除了${}占位符的{}其实是可以省去的。
    占位符里面可以包含一个闭包表达式。

    对象

    Getter/Setter 方法

    在Groovy中,对象的 Getter/Setter 方法和属性是默认关联的,比如:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

     

    public static class Student {

    String StudentName;

    }

    public static class Student {

    String StudentName;

    String getStudentName() {

    return StudentName

    }

    void setStudentName(String studentName) {

    StudentName = studentName

    }

    }

    with 方法

    当对同一个对象进行操作时,可以使用 with

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

     

    Student st = new Student()

    st.with {

    id = 10;

    name = "James";

    }

    println st.getName()

    ......

    public static class Student {

    def name

    def id

    }

    join 方法

    用指定的字符连接集合中的元素:

     

    1

    2

     

    def list = [2017,1,6]

    println list.join("-")

    其他实用方法请参考 Groovy API 文档中的 DefaultGroovyMethods

    闭包

    闭包是一个短的匿名代码块。它通常跨越几行代码。一个方法甚至可以将代码块作为参数。它们是匿名的。
    下面是一个简单闭包的例子:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

     

    def clos = {

    def worldStr = "World"

    def helloStr = "Hello $worldStr";

    println helloStr

    def person = [name: 'Joe', age: 36]

    println "$person.name is $person.age years old"

    }

    clos.call()

    代码行 {…}被称为闭包。此标识符引用的代码块可以使用call语句执行。

    闭包也可以包含形式参数,以使它们更有用,就像Groovy中的方法一样。

     

    1

    2

    3

    4

    5

     

    def clos = { param ->

    def helloStr = "Hello $param";

    println helloStr

    }

    clos.call("World")

    如果闭包不指定参数,那么它会有一个隐含的参数 it

     

    1

    2

    3

    4

    5

     

    def clos = {

    def helloStr = "Hello $it";

    println helloStr

    }

    clos.call("World")

    闭包可以有返回值:

     

    1

    2

    3

    4

    5

     

    def clos = {

    def helloStr = "Hello $it";

    return helloStr

    }

    println clos.call("World")

    闭包还可以作方法的参数。

    本地集合

    内置的正则表达式

    学习资料

    W3C school Groovy教程
    Gradle从入门到实战 - Groovy基础

     

    from: https://www.heqiangfly.com/2016/04/20/development-tool-gradle-groovy-basic/

    更多相关内容
  • Groovy教程.7z

    2020-05-20 15:18:09
    Groovy 是一种基于Java平台的面向对象语言。Groovy 的语法和 Java 非常的相似,可以使用现有的 Java 库来进行 Groovy 开发。可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。
  • groovy教程入门

    2021-07-16 12:27:17
    groovy入门groovy文件编译运行groovy的基础类型floatString常规StringGStringImpl正则表达式ListMapGroovy语法Closures with {}Closures 2Method方法带默认值map作为参数Class 最近在udemy上学习gradle,中间穿插了...


    最近在udemy上学习gradle,中间穿插了groovy的内容,本文主要介绍groovy的基础数据类型以及语法,如果本文对您有帮助,请不要吝啬您的点赞,谢谢~

    groovy文件编译运行

    • 创建文件 Start.groovy ,并写上:println("hello"), 利用groovy命令行编译运行:groovy src/com/xj/groovy/Hello/Start.groovy, 得到如下结果:
      groovy编译运行成功

    groovy的基础类型

    float

    a = 10.24F
    println a
    println a.class
    

    输出:
    groovy float

    可以看见groovy里面的float类型就是Java里面的Float类型

    String

    常规String

    • 单引号或者双引号
    s = 'Hello' // "Hello"
    println s
    println s.class
    

    输出:
    groovy String类型

    • 可以换行的
    s = '''
            All the power is with in you.
            You can do anything and everything
            '''
    println(s)
    println(s.class)
    

    输出
    带换行的String

    GStringImpl

    name = "friend"
    s = "hello ${name}"
    println s
    println s.class
    

    输出:
    Groovy GStringImpl

    正则表达式

    emailPattern = /([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})/
    println emailPattern.getClass()
    println "test@gmail.com" ==~ emailPattern
    println "testgmail.com" ==~ emailPattern
    

    输出:
    Groovy 正则表达式

    List

    LinkedList l = [1, 2, 3]
    println l         // [1, 2, 3]
    println l.class   // class java.util.LinkedList
    
    l << 4
    println l         // [1, 2, 3, 4]
    
    l = l + [5, 6, 7]
    println l         // [1, 2, 3, 4, 5, 6, 7]
    
    println l - [3, 5] // [1, 2, 4, 6, 7]
    
    l.each {println it}  // 1 2...
    l.reverseEach {println it}  // 7 6 ..
    l.eachPermutation {println it}  // 排列组合
    

    Map

    
    m = [:]
    println(m)             // [:]
    println(m.getClass())  // class java.util.LinkedHashMap
    
    m = [courseName: 'Gradle', rating: 5, price: 20]
    println(m)            // [courseName:Gradle, rating:5, price:20]
    
    m.each {
        k, v ->
            println k
            println v
    }
    println m.courseName          // Gradle
    println m['courseName']       // Gradle
    println m.get('courseName')   // Gradle
    

    Groovy语法

    Closures with {}

    c = {
        n = 2 -> println(n%2 == 0 ? "even": "odd")
    }
    c.call() // even
    c.call(1) // odd
    

    Closures 2

    4.times {n->print(n)}
    println()
    4.times {print(it)}
    println()
    

    输出:
    groovy closures times

    Method

    方法

    int product(int x, int y) {
        return x*y
    }
    println product(10, 5)   // 50
    result = product 10, 5
    println(result)           // 50
    

    带默认值

    int product(int x = 3, int y) {
        return x*y
    }
    result = product 5
    println(result)           // 15
    

    map作为参数

    void display(Map productDetails) {
        println productDetails.name
        println productDetails.price
    }
    
    display([name: 'IPhone', price: 1000])
    

    Class

    class Patient {
        def firstName, lastName, age
        static hospitalCode = "huoshan"
    
        void setLastName(lastName) {
            if (lastName == null) {
                throw new IllegalArgumentException("Last name can not be null");
            }
            this.lastName = lastName
        }
        static void display() {
            println hospitalCode
        }
    }
    
    p = new Patient(firstName: 'jhon', age: 40, lastName: 'jack')
    p.setLastName("buffer")
    println p.firstName + " " + p.lastName + " " + p.age  // jhon buffer 40
    Patient.display()            // "huoshan"
    
    展开全文
  • groovy 教程

    2007-12-24 11:45:32
    groovy 教程groovy 教程
  • TutorialsPoint Groovy 教程.epub
  • Groovy教程学习资料宣贯.pdf
  • groovy教程

    2020-10-07 13:26:10
    视频链接:https://www.bilibili.com/video/BV1qJ411n71M/?spm_id_from=333.788.videocard.0 关于环境:https://www.jianshu.com/p/cb92567adda1 ... IDEA创建groovy:https://blog.csdn.net/zknxx/article/details/5

    视频链接:https://www.bilibili.com/video/BV1qJ411n71M/?spm_id_from=333.788.videocard.0

    关于环境:https://www.jianshu.com/p/cb92567adda1

    关于环境:https://blog.csdn.net/weixin_37625173/article/details/100529803

    IDEA创建groovy:https://blog.csdn.net/zknxx/article/details/52123519

    新建groovy项目:https://www.cnblogs.com/dalianpai/p/12803715.html

    如何安装环境:

     

    代码:

    第一个知识点:

    第二,三个知识点:

    第四个知识点:

    第五个知识点:

    第六个知识点:

    第七个知识点:

    第八个知识点:

    第九个知识点:

    第十个知识点:

    第十一个知识点:

    ---1---

    groovy自带的集合的方法。

    第一个方法:

    第二个方法:

    第三个方法:

    第四个方法:

    第五个方法:

    第六套方法:

    第七个知识点:

    举例:

    第八个知识点:

    第九个知识点(文件):

    也可以是字节码的:

    读取:

    第十个知识点:

    文件:

    第十一个知识点:

    第十二个知识点:

    第十三个知识点:极简的URL

    第十四个知识点:

    输出:

    第十五个知识点:

    https://www.cnblogs.com/baxianhua/p/13300056.html

    第十六个知识点:

    第十七个知识点:

    ---2---

    第五章:

    第一个方法:

    第二个方法:

    加注解之后:

    第三个方法:

    第四个知识点:

    第五个知识点:

    第六个知识点:正则表达式

    分组:

    第七个知识点,泛型:

    第八个知识点:

    第九个知识点:

    第十个知识点:

    ---3---

    设计模式:

    第一个:

    策略:

    改为:

    第二个:

    第三个:

    ---4---

    另一个:

    第四个:

    ...

    例子:

    ---

    ---5---

    第一个知识点:

    第二个知识点:常见的集合操作函数:

    第三个知识点:

    第四个知识点:

    第五个知识点:

    第六个知识点:

    第七个知识点:

    第八个知识点:

    ---6---

    w3c:https://www.w3cschool.cn/groovy/groovy_regular_expressions.html

    展开全文
  • Groovy 教程

    2010-06-21 23:07:43
    教程适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java™ 开发人员。了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。
  • 赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...
  • Groovy入门教程[参照].pdf
  • groovy入门教程

    2021-12-09 16:41:02
    Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...

    前言

    Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
    Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。

    官网地址:http://www.groovy-lang.org/

    安装
    1. 下载地址:http://www.groovy-lang.org/install.html#_download
      在这里插入图片描述

    2. 进行环境变量设置

    设置【GROOVY_HOME】变量指向groovy安装目录

    修改path变量 新增 【GROOVY_HOME/bin】
    在这里插入图片描述

    在这里插入图片描述

    1. 验证

    打开本机cmd输入【groovy -v】, 返回如下则成功安装

    Groovy Version: 3.0.9 JVM: 1.8.0_121 Vendor: Oracle Corporation OS: Windows 10
    
    idea 使用
    1. 创建项目并设置lib
      在这里插入图片描述

    2. 打印【hello world】

    在这里插入图片描述

    1. 写法1 创建groovy文件
    package com.xia
    
    class Test {
        static void main(String[] args) {
            println ('hello world')
        }
    }
    
    1. 写法2 无需写包路径和class
    println("hello world")
    

    关注下方公众号,关注即可获取上百本前沿技术电子书、2021最新面试资料,助力职场无忧。

    在这里插入图片描述

    展开全文
  • Groovy教程

    2019-01-11 00:07:14
    https://www.w3cschool.cn/groovy/groovy_overview.html
  • Groovy 变量 (Groovy 教程) - Groovy教程 中文开发手册Groovy中的变量可以通过两种方式定义 - 使用数据类型的本地语法,或者使用def关键字。对于变量定义,必须明确提供类型名称或在替换中使用“def”。这是Groovy...
  • IntelliJ IDEA配置Groovy教程

    千次阅读 2021-07-24 16:19:35
    写这篇文章的起因是因为经常性的需要更新Jenkins脚本,而Jenkins脚本是用Groovy写的, 所以不可避免的会用到Groovy,这里简单记录下自己调试Groovy脚本的过程 一、IntelliJ IDEA设置 社区版够用, 一路下载安装就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,505
精华内容 3,802
关键字:

groovy教程