歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Groovy入門教程

 一、Groovy是什麼

簡單地說,Groovy 是下一代的java語言,跟java一樣,它也運行在 JVM 中。

作為跑在JVM中的另一種語言,groovy語法與 Java 語言的語法很相似。同時,Groovy 拋棄了java煩瑣的文法。同樣的語句,使用groovy能在最大限度上減少你的擊鍵次數——這確實是“懶惰程序員們”的福音。

Groovy 的詳細介紹:請點這裡
Groovy 的下載地址:請點這裡

二、開發環境

1、  jdk 1.5以上

2、  eclipse+groovy plugin(支持Groovy 1.5.7)

打開eclipse,通過Software Updates > Find and Install...菜單,使用“Search for new features to install” 下載並安裝groovy插件。New一個遠程站點,url可使用http://dist.codehaus.org/groovy/distributions/update/,插件名:Groovy plug-in。根據需要你可以同時選擇groovy和grails(後續會學習到):

三、創建groovy項目

1、  新建一個groovy項目

New --> Project à Java Project 創建一個java項目。為了方便管理,建議在source中建兩個source文件夾java和groovy,分別用於存儲java源文件和groovy源文件:

 

2、  添加 Groovy 特性

在項目上右擊,Groovy à Add Groovy Nature,這樣會在項目中添加 Groovy Libraries。

 

3、  添加 Groovy 類

在項目groovy源文件下右鍵,New à Other àGroovy à Groovy Class

 

自動生成的源代碼如下:

public class HelloWorld{

    /**

    * @param args

    */

    public static void main(def args){

      // TODO Auto-generated method stub

    } 

}

我們在main方法中加一句打印語句:

println "Hello World"

4、  編譯運行groovy類

在源文件上右鍵,Compile Groovy File,然後右鍵,Run As à Groovy ,在控制台中查看運行結果。

實際上 groovy 語法的簡練還體現在,就算整個文件中只有println "Hello World"這一句代碼(把除這一句以外的語句刪除掉吧),程序也照樣能夠運行。

當然,為了說明groovy 其實就是java,你也可以完全按照java 語法來編寫HelloWorld類。

 

四、Groovy語法簡介

1、  沒有類型的java

作為動態語言,groovy中所有的變量都是對象(類似於.net framework,所有對象繼承自java.lang.Object),在聲明一個變量時,groovy不要求強制類型聲明,僅僅要求變量名前使用關鍵字def(從groovy jsr 1開始,在以前的版本中,甚至連def都不需要)。

修改main 方法中的代碼:

def var="hello world"

println var

println var.class

你可以看到程序最後輸出了var的實際類型為:java.lang.String

作為例外,方法參數和循環變量的聲明不需要def。

2、  不需要的public

你可以把main方法前面的public去掉,實際上,groovy中默認的修飾符就是public,所以public修飾符你根本就不需要寫,這點跟java不一樣。

3、  不需要的語句結束符

Groovy中沒有語句結束符,當然為了與java保持一致性,你也可以使用;號作為語句結束符。在前面的每一句代碼後面加上;號結束,程序同樣正常運行(為了接受java程序員的頑固習慣)。

4、  字符串連接符

跟java一樣,如果你需要把一個字符串寫在多行裡,可以使用+號連接字符串。代碼可以這樣寫:

      def var="hello "+

      "world"+

      ",groovy!"

當然更groovy的寫法是:

      def var="""hello

      world

      groovy!"""

三個”號之間不在需要+號進行連接(不過字符串中的格式符都會被保留,包括回車和tab)。

5、  一切皆對象

聽起來象是“眾生平等”的味道,事實上groovy對於對象是什麼類型並不關心,一個變量的類型在運行中隨時可以改變,一切根據需要而定。如果你賦給它boolean ,那麼不管它原來是什麼類型,它接受boolean值之後就會自動把類型轉變為boolean值。看下面的代碼:

def var="hello "+

      "world"+

      ",groovy!"

      println var;

      println var.class;

      var=1001

      println var.class

輸出結果:

hello world,groovy!

class java.lang.String

class java.lang.Integer

 

var這個變量在程序運行中,類型在改變。一開始給它賦值String,它的類型就是String,後面給它賦值Integer,它又轉變為Integer。

6、  循環

刪除整個源文件內容,用以下代碼替代:

      def var="hello "+

      "world"+

      ",groovy!"

      def repeat(val){

            for(i = 0; i < 5; i++){

            println val

            }

      }

      repeat(var)

輸出:

hello world,groovy!

hello world,groovy!

hello world,groovy!

hello world,groovy!

hello world,groovy!

注意循環變量i前面沒有def。當然也沒有java中常見的int,但如果你非要加上int也不會有錯,因為從Groovy1.1beta2之後開始(不包括1.1beta2),groovy開始支持java經典的for循環寫法。

此外,上面的for語句還可以寫成:

            for(i in 0..5)

這樣的結果是一樣的。     

7、  String 和 Gstring

除了標准的java.lang.String以外(用’號括住),groovy還支持Gstring字符串類型(用“號括住)。把上面的for循環中的語句改成:

            println "This is ${i}:${val}"

運行一下,你就會明白什麼是Gstring。

8、  范圍

這個跟pascal中的“子界”是一樣的。在前面的for循環介紹中我們已經使用過的for(i in 0..5)這樣的用法,其中的0..5就是一個范圍。

范圍 是一系列的值。例如 “0..4” 表明包含 整數 0、1、2、3、4。Groovy 還支持排除范圍,“0..<4” 表示 0、1、2、3。還可以創建字符范圍:“a..e” 相當於 a、b、c、d、e。“a..<e” 包括小於 e 的所有值。

范圍主要在for循環中使用。

9、  默認參數值

可以為方法指定默認參數值。我們修改repeat方法的定義:

def repeat(val,repeat=3){

            for(i in 0..<repeat){

            println "This is ${i}:${val}"

            }

      }

可以看到,repeat方法增加了一個參數repeat(並且給了一個默認值3),用於指定循環次數。

當我們不指定第2個參數調用repeat方法時,repeat參數取默認值3。

10、              集合

Groovy支持最常見的兩個java集合:java.util.Collection和java.util.Map。前面所說的范圍實際也是集合的一種(java.util.List)。

(1) Collection

Groovy 中這樣來定義一個Collection:

def collect=["a","b","c"]

除了聲明時往集合中添加元素外,還可以用以下方式向集合中添加元素:

collect.add(1);

      collect<<"come on";

      collect[collect.size()]=100.0

Collection使用類似數組下標的方式進行檢索:

      println collect[collect.size()-1]

      println collect[5]

groovy支持負索引:

println collect[-1]      //索引其倒數第1個元素

      println collect[-2]      //索引其倒數第2個元素

Collection支持集合運算:

collect=collect+5        //在集合中添加元素5

      println collect[collect.size()-1]

      collect=collect-'a'        //在集合中減去元素a(第1個)

      println collect[0]          //現在第1個元素變成b了

同樣地,你可以往集合中添加另一個集合或刪除一個集合:

      collect=collect-collect[0..4]  //把集合中的前5個元素去掉

      println collect[0]  //現在集合中僅有一個元素,即原來的最後一個元素

      println collect[-1]  //也可以用負索引,證明最後一個元素就是第一個元素

(2) Map

Map是“鍵-值”對的集合,在groovy中,鍵不一定是String,可以是任何對象(實際上Groovy中的Map就是java.util.Linke dHashMap)。

如此可以定義一個Map:

      def map=['name':'john','age':14,'sex':'boy']

添加項:

      map=map+['weight':25]      //添加john的體重

      map.put('length',1.27)      //添加john的身高

      map.father='Keller'        //添加john的父親

可以用兩種方式檢索值:

      println map['father']      //通過key作為下標索引

      println map.length          //通過key作為成員名索引

Copyright © Linux教程網 All Rights Reserved