zoukankan      html  css  js  c++  java
  • groovy学习知识

    (1)Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
    我们sys_rule中使用的Groovy就是脚本语言。由Common提供的执行器执行。

    二、注释

      “#!”注释只允许在脚本文件的第一行出现,通过这种方式Unix shell能定位groovy的启动脚本并且运行这些脚本。 

      “//”单行注释,注释文字必须在这一行结束。
      多行注释使用“/*……*/”包围起来。
      Javadoc风格的注释“/**……*/”和多行注释是相似的,但是这种注释支持groovydoc用来生成文档,groovydoc与javadoc使用的语法是等价的。

    #!注释只允许在脚本文件的第一行出现

    (3)

    //单行注释

    /*

    多行注释

    */

    /**

    文档注释

    **/

    println("Hello World")

    三、语法自动导包

    Groovy自动导入以下包和类:
    groovy.lang.*
    groovy.util.*
    java.lang.*
    java.util.*
    java.net.*
    java.io.*
    java.math.BigInteger
    java.math.BigDecimal

    (5)

    //java.math
    BigDecimal num = new BigDecimal("123456")
    println(num)

    //java.util
    ArrayList<String> list = new ArrayList<String>()
    list.add("123")
    list.add("456")
    list.add("789")
    println(list)

    四、语法简化内容

    1.不需要public修饰符 因为类和方法修饰符默认为public 属性则默认为private
    class Book
    {
    String title
    Book (String theTitle)
    {
    title = theTitle
    }

    String getTitle()
    {
    return title
    }
    }

    Book book = new Book("Groovy in Action")
    println book.getTitle()

    (7)

    2.不需要getter/setter,可以直接使用类实例的属性

    class Book
    {
    String title
    Book (String theTitle)
    {
    title = theTitle
    }
    }

    Book book = new Book()
    println book.title
    book.setTitle("Groovy")
    println book.getTitle()

    (8)

    3.不需要分号。不需要括号

    String str = "123";
    println str;
    println (str)

    (9)

    4.不需要类型说明,不关心属性的具体类型,可以直接使用def声明,当然也可以和java一样使用int、String等声明一个属性类型

    def num1 = 123
    def num2 = '123'
    def num3 = 12.3
    def num4 = 123000000000000000000
    def num5 = 123000000000

    println num1.class
    println num2.class
    println num3.class
    println num4.class
    println num5.class

    (10)

    5.不需要return,我们定义有返回值的方法时,return语句不是必须的,当没有return的时候,Groovy会把方法执行过程中的最后一句代码作为其返回值

    def num1 = method 1,2
    def num2 = method "Test1","Test2"

    println "num1 " + num1
    println "num2 " + num2

    def method(def a, def b)
    {
    if (a > b)
    {
    a
    }
    else
    {
    b
    }
    }

    五、强制类型的转换

    类型转换,可以使用as关键字强制类型转换,也可以使用Java的强制类型转换(不推荐)

    def num = "123"
    println num.class

    def num1 = num as Integer
    println num1.class

    long a = 123
    int b = (long)a

    println a.class
    println b.class

    六、字符串

    单引号和双引号可以表示字符串。
    异同:
    两者都可以定义一个字符串常量。
    单引号是纯粹的字符串常量,双引号里的字符串里的表达式可以做运算。

    def name = 'liuhuimin'
    def str = "My name is ${name}"

    println str

    PS:三引号可以表示多行字符串

    def str = '''line 1
    line2
    line3
    '''

    println str

    七、集合

    List
    定义一个List,可以直接使用def list = [1,2,3],访问List可以不使用get,而是使用数组下标的访问形式。

    def list = [1,2,3]

    println list.class
    println list[0]

    Groovy还提供了负下标和范围索引,负下标表示从最后一个开始数,-1为最后一个

    println list[-1]

    Groovy还提供了范围索引类

    println list[0..1]

    (14)

    1.传统Java遍历方法

    def list = [1,2,3]

    for (def i = 0; i < list.size(); i++)
    {
    println list[i]
    }

    for (def i : list)
    {
    println i
    }

    2.Groovy中遍历方法

    def list = [1,2,3]

    for (def i in list)
    {
    println i
    }

    list.each
    {
    t -> println t
    }

    list.each
    {
    // 魔术变量it可以省略
    println it
    }

    (15)Map
    Map是由键值对(key-value,通过冒号分隔键与值)组成的集合。

    def map = ["key1":0,"key2":1,"key3":1]

    println map["key1"]
    println map.key2

    Map遍历
    1、Java方法

    def map = ["key1":0,"key2":1,"key3":2]

    for (def entry : map.entrySet())
    {
    println "key: ${entry.key},value: ${entry.value}"
    }

    2、Groovy方法

    def map = ["key1":0,"key2":1,"key3":2]

    map.each
    {
    println "key: ${it.key},value: ${it.value}"
    }

    map.each
    {
    key, value -> println "key: ${key},value: ${value}"
    }

     

     

  • 相关阅读:
    kafka生产数据,消费数据
    sparkStreaming
    逻辑训练题(二)--统计一个数字在排序数组中出现的次数。
    逻辑题(一)一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。
    Markdown语法
    Spring中的AOP 知识点
    spring基于注解的IOC配置 知识点
    Cookie&Session 知识点
    ServletContext域对象 知识点
    response 知识点
  • 原文地址:https://www.cnblogs.com/cherishforchen/p/9922578.html
Copyright © 2011-2022 走看看