• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Groovy

    標簽: Groovy  Gradle

    什么是Groovy

    ??Groovy是用于Java虛擬機的一種敏捷的動態語言,它是一種成熟的面相對象的編程語言,既可以用于面相對象編程,又可以用作純粹的腳本語言。使用該種語言不必寫過多的代碼,同時又具有閉包和動態語言中的其它特性。

    ??Groovy是JVM的一個替代語言(替代是指可以用 Groovy 在Java平臺上進行 Java 編程),使用方式基本與使用 Java代碼的方式相同,該語言特別適合與Spring的動態語言支持一起使用,設計時充分考慮了Java集成,這使 Groovy 與 Java 代碼的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的結合編程。

    Groovy與Java比較

    特點

    • Groovy完全兼容Java的語法
    • 分號是可選的
    • 類、方法默認是public的
    • 編譯器給屬性自動添加Getter/Setter方法
    • 屬性可以直接用點號獲取
    • 最后一個表達式的值會被作為返回值
    • Java中==比較的是兩個對象的內存地址是不是同一個對象,而在Groovy中==等同于equals(),不會有NullPointerExceptions

    示例代碼

    public class Cat{
    
        private String name
    
        public Cat(String name){
            this.name = name
        }
    
    }
    Cat cat = new Cat('波斯貓')
    
    println cat.name
    
    Cat cat2 = null
    
    println cat2 == cat

    顯示結果

    這里寫圖片描述

    Groovy的高效特性

    • assert語句

    ??在任何地方都可以進行斷言操作

    ??執行語句:

    assert true

    ??執行結果:

    這里寫圖片描述

    ??執行語句:

    assert false

    ??執行結果:

    這里寫圖片描述

    • 可選類型定義

    ??類型是可選的,相當于一個弱類型的編程語言直接def跟變量名即可,而變量的類型是根據后面的操作推導出來的

    ??示例語句:

    def flag = true
    def name = '張三'
    • 可選的括號:

    ??調用方法后面如果有參數的話,其括號是可以不寫的

    ??執行語句:

    def name = '張三'
    
    println(name)
    println name

    ??執行結果:

    這里寫圖片描述

    • 字符串

    ??字符串有三種表示形式:分別是單引號、雙引號、以及三個引號。

    ??執行語句

    def s1 = 'World!'
    def s2 = "Hello ${s1}"
    def s3 = '''hell
    world!'''
    println s1
    println s2
    println s3

    ??執行結果:

    這里寫圖片描述

    ??從上面我們可以看出,單引號中的內容可以直接顯示,雙引號中的內容可以傳參,三引號中的內容可以換行。

    • 集合API

    ??List、Map在Groovy中有更簡單的寫法

    ??List集合

    ??執行語句

    def list = ['張三','李四']
    list << '王五'
    
    assert list.size() == 3
    assert list.getClass() == ArrayList
    Iterator iterator = list.iterator()
    while(iterator.hasNext()){
        println iterator.next()
    }

    ??執行結果

    這里寫圖片描述

    ??Map集合

    ??執行語句

    def map = [id : 1,name : '張三']
    map.age = 20
    
    Iterator iterator = map.keySet().iterator()
    while (iterator.hasNext()){
        println map[iterator.next()]
    }

    ??執行結果

    這里寫圖片描述

    • 閉包(closurs)

    ??閉包在groovy中是一個處于代碼上下文中的開放的,匿名代碼塊。它可以訪問到其外部的變量或方法。

    ??執行語句

    def c = { v -> println v}
    
    def method(Closure closure){
        closure('hello')
    }
    
    method(c)

    ??執行結果

    這里寫圖片描述

    參考來源:Groovy百度百科


    版權聲明:本文為ZZY1078689276原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/ZZY1078689276/article/details/80353611

    智能推薦

    Groovy_Learn_003_Groovy基本語法

    Groovy基本語法 為了了解Groovy的基本語法,讓我們先看一個簡單的Hello World程序 在Groovy中導入語句import語句可以用來導入,可以在你的代碼可以使用其他庫的功能。這是通過使用在 Import 關鍵字完成。 下面的示例演示了如何使用MarkupBuilder的類,它可能是最常用的創建HTML或XML標記的類之一。 默認情況下,Groovy在代碼中包括以下庫,因此您不需要...

    Groovy_Learn_002_Groovy環境

    Groovy環境 有多種方式來獲得Groovy環境設置 下載安裝,獲得Windows安裝部分 ----- 安裝過程就不詳細的介紹了。 也可下載壓縮包 下載后,把壓縮包解壓到相應的位置,然后再環境變量的Path里面添加解壓后的路徑(到解壓的bin目錄下)。配置好后,然后運行groovy -v,可以看到如下圖 到這里,就安裝好了。 Hello Groovy Dos中運行groovyconsole之后,...

    Linux下安裝groovy & Idea安裝groovy

    1.下載groovy-2.5.3 下載鏈接:某盤鏈接 提取碼:q3ir 如果鏈接失效,請留言。 2.Linux安裝groovy 3.Idea安裝groovy 下載groovy-2.5.3.zip后,本地解壓縮,記住路徑,如:/Download/groovy-2.5.3 打開Idea,右鍵項目,選擇Project Structure -> Global Libraries -> 加號 -...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡