日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Grovvy初识

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grovvy初识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Groovy和Java對比

Groovy的松散的語法允許省略分號和修飾符 除非另行指定,Grovvy的所有內容都為public Grovvy允許定義簡單腳本,同時無需定義正規的class對象 Grovvy在普通的常用java對象上增加了一些獨特的方法和快捷方式,使得他們更容易使用 Grovvy語法還允許省略變量類型 關于閉包:可以將閉包想象成為一個代碼塊,可以現在定義,以后再執行??梢允褂眠@些強大的構造做許多漂亮的事情,不過最著名的是簡化迭代。使用Grovvy之后,就有可能也不再需要編寫Iterator實例了。 動態的mGroovy:從技術山講,Grovvy可能是您最近通水的類型最松散的動態語言之一。從這個角度講,Groovy有java的區別很大,java語言是一種固定的類型語言。在Groovy中類型是可選的。所以不必輸入String myStr="Hello",來聲明String變量??梢灾苯邮褂胐ef進行不指定類型定義,類似于java中的var. 與java交互:用Grovvy編寫的任何內容都可以編譯成標準的java淚文件并在java代碼中重用。類似地,用標準的java代碼編寫的內容也是可以在Grovvy中重用。

2.用實例演示Java和Grovvy的區別

用java編寫的Hello World public ?class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World"); } } 編譯和運行Java示例 編譯 c:>javac HelloWorld.java 執行 c:>java HelloWorld 用Grovvy編寫的Hello World? Grovvy支持松散的java語法,例如,不需要為打印Hello World這樣的簡單操作定義類 而且,Grovvy使日常的編碼活動變得更容易。例如,Grovvy允許駛入peinrln,而無須輸入System.out.println。。當輸入println時,Grovvy會非常聰明的知道您的System.out 所以用Grovvy編寫Hello World的程序就上如下: println "Hello World"

請注意,在這段代碼周圍沒有類結構,而且也沒有方法結構!我還使用?println?代替了?System.out.println

運行Grovvy示例: 假設文件為

/home/amosli/developsoft/language/groovy/test/Hello.groovy

?

如果已經設置了Grovvy的環境變量,那么只需輸入:

更快捷的方式:

如果有環境變量就變成了:

?

這會有相同的結果,而且甚至無須定義任何文件。

3Grovvy是沒有類型的java代碼

類型定義:

為什么要有類型定義:在java中,如果要聲明一個String變量,則必須輸入:

String value="Hello world";

?

但是,如果仔細想想,就會看出,等號右側的字符已經表明?value?的類型是?String。所以,Groovy 允許省略?value?前面的?String?類型變量,并用?def?代替。

?def value="hello world"

?

實際上,Grovvy會根據對象的值來判斷他的類型。

運行程序!

將HelloWorld.grovvy文件中的代碼編輯成下面這樣

?

4.通過Grovvy進行循環

方式1:

這里可以定義i為int或者def,或者不定義其類型

方式2:

使用in進行循環,其中..表示“到”,0..5表示0到5.類似于0<=5;這里循環6次。

可以使用0..<5進行限定。類似于0<5循環5次。

5.Grovvy中的集合

1)Grovvy中的list

注意:assert命令用來證明范圍是java.util.List的實例,接著運行這個代碼,。證實該范圍是類型List的集合。

Grovvy的語法:

coll看起來很像一個java語言中的數組,實際上他是一個Collection。要在普通的java代碼中得到集合的相同實例,必須執行以下操作。

在java黛娜中,必須使用add()向ArrayList實例添加項。

而Grovvy中則提供了三種方法:

?

查找元素:

Grovvy中的特殊方法:

Grovvy中的特殊方法:

?

join()和count()只是在任何項List都可以調用的眾多方法中的兩個,分布操作符是個提別方便的工具,使用這個工具不要再集合上迭代,就能夠調用集合每個項上的方法。

假設有一個String列表,現在想將列表中的項目全部變成大寫,可以編寫以下代碼:

?

assert ["JAVA", "GROOVY"] ==

["Java", "Groovy"]*.toUpperCase()

注意*.標記。對于以上列表中的每個值,都會調用toUpperCase().生成的集合中每個String實例都是大寫的。

?

?

2)Grovvy中的Map

java語言中的映射是名稱-值對的集合。所以,要用java代碼創建典型的映射,必須像如下這樣:

Grovvy使得處理映射的操作像處理列表一樣簡單,例如,可以用Grovvy將上面的java映射寫成:

注意:Grovvy映射中的鍵不必恃String.在這個示例中,name看起來像一個變量,但是在幕后,Grovvy會將它變成String.

驗證hash格式:

assert ? hash.getClass()==java.util.LinkedHashMap

?

Grovvy中Hash的Set/Get

注意:在使用[]語法從映射獲取項時,必須將項作為String引用。

?

6Grovvy中的閉包

java的Iterator實例,用它在集合上迭代,就像下面這樣。

注意,each直接在acoll實例內調用,而acoll實例的類型是ArrayList.在each調用之后,引入了一種新的語法{,代碼}。由{}包圍起來的代碼塊就是閉包。

閉包中的it變量是一個關鍵字,指向被調用的外部集合的每個值-他是默認值,可以用傳遞給閉包的參數覆蓋他。下面的代碼執行同樣的操作,但使用自己的項變量:

在這個示例中,用value代替了Grovvy的默認it.

?

請注意,閉包還允許使用多個參數,在上面的實例中,包含兩個參數(key和value)

凡是集合或一系列的內容,都可以使用下面這樣的代碼進行迭代。

?

這段代碼是名為excite的閉包,這個閉包接受一個參數(名為word)返回的String是word變量加兩個感嘆號。請注意String實例中替換的用法。在String中使用${value}語法將告訴Grovvy替換String中的某個變量的值??梢詫⑦@個語法當成return word+"!!"的快捷方式。

輸出this is Grovvy

?

7Groovy中的類

新建一個類song

?

?

?

Groovy 自動提供一個構造函數,構造函數接受一個名稱-值對的映射,這些名稱-值對與類的屬性相對應。這是 Groovy 的一項開箱即用的功能 — 用于類中定義的任何屬性,Groovy 允許將存儲了大量值的映射傳給構造函數。映射的這種用法很有意義,例如,您不用初始化對象的每個屬性。


?

也可以添加下面這樣的代碼:

也可以添加像下面這樣直接操縱類的屬性:

在Song類中,添加以下代碼:

?

8 Grovvy中的單元測試

在Intellij中只需要加入@Test注解就可以使用JUnit測試

加個?可以防止空指針的錯誤:

9.擴展、

?

如果需要用Groovy做web 項目的話可以去了解一下Grails框架。

轉載于:https://www.cnblogs.com/dream-to-pku/p/5445705.html

總結

以上是生活随笔為你收集整理的Grovvy初识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。