精通Groovy之簡要總結
阿新 • • 發佈:2017-11-04
很好 機制 for循環 static none vpn 可見 Education 能力
簡介
Groovy 是 JVM 的一個替代語言 —替代 是指可以用 Groovy 在 Java 平臺上進行 Java 編程,使用方式基本與使用 Java 代碼的方式相同。在編寫新應用程序時,Groovy 代碼能夠與 Java 代碼很好地結合,也能用於擴展現有代碼。Groovy 的一個好處是,它的語法與 Java 語言的語法很相似。雖然 Groovy 的語法源於 Smalltalk 和 Ruby 這類語言的理念,但是可以將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。詳見:精通groovy
Groovy與java的對比
- java編寫簡單的helloworld
c:>javac HelloWorld.java
及c:>java HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 用groovy編寫簡單的helloworld
當您輸入println 時,Groovy會知道指的是 System.out
然後運行:c:>groovy MyFirstExample.groovy
代碼文件MyFirstExample.groovy:
println "Hello World!"
- 由此可見,我們並不需要編譯groovy文件,因為Groovy 屬於腳本語言。腳本語言的一個特點就是能夠在運行時進行解釋。(其實groovy也可以進行編譯,使用groovyc編譯產生標準的java字節碼),可見:用 Groovy 編寫的所有代碼都能夠通過標準 Java 運行時編譯和運行。
另附:groovy簡單類文件,可見它不包含public,其中main也沒有類型。
class HelloWorld { static void main(args) { println "Hello World" } }
Groovy是沒有類型的java代碼
- Java中聲明String變量:
String value = “Hello World”;
但是在groovy中:def value = "Hello World";
,可見Groovy會根據對象的值來判斷它的類型,如果輸出println value
,則控制臺會輸出Hello World,如果輸出println value.class
,則控制臺會輸出“class java.lang.String” - 在groovy中“一切都是對象”,groovy會自動推斷數據類型。
通過Groovy進行循環
- 定義一個獨立的函數
可以看到它很像JavaScript,但是他就是java代碼,只不過用groovy的樣式編寫。repeat函數接受一個變量,調用函數會輸出val五次。另外for循環省略了int。 - Groovy中的範圍
例如: “0..4” 表明包含整數 0、1、2、3、4。“0..<4” 表示 0、1、2、3。“a..e” 相當於 a、b、c、d、e。“a..<e” 包括小於 e 的所有值。
例子:可以把for(i = 0; i < 5; i++)
改成for(i in 0..<5)
或for(i in 1..5)
或for(i in 0..4)
這樣就與前邊保持一致,共輸出五次。
如果對於下面的函數,調用repeat("foo")
,則輸出“foo”五次(默認情況下)
def repeat(val, repeat=5){
for(i in 0..<repeat){
println val
}
}
Groovy集合
- 在 Java 中使用集合 — 導入 java.util 類,初始化集合,將項加入集合。這三個步驟都會增加不少代碼。而 Groovy 可以直接在語言內使用集合。在 Groovy 中,不需要導入專門的類,也不需要初始化對象。集合是語言本身的本地成員。Groovy 也使集合(或者列表)的操作變得非常容易,為增加和刪除項提供了直觀的幫助。
Groovy映射
Groovy 中的任何映射機制在幕後都是 java.util.Map 的實例。
- Java語言的映射
JAVA語言中的映射是名稱-值對的集合,要用Java代碼創建典型的映射,必須像下面這樣操作:
Map<String, String>map = new HashMap<String, String>();
map.put("name", "Andy");
map.put("VPN-#","45");
一個HashMap實例容納兩個名稱-值對,每一個都是String的實例。
- 通過Groovy進行映射。上面的映射可以寫成
def hash = [name:"Andy", "VPN-#":45]
,這裏groovy映射中的鍵不必是String。這裏的name看起來像一個變量,但其實groovy會將其變成String。
參考鏈接:https://www.ibm.com/developerworks/cn/education/java/j-groovy/j-groovy.html
精通Groovy之簡要總結