1. 程式人生 > >精通Groovy之簡要總結

精通Groovy之簡要總結

很好 機制 for循環 static none vpn 可見 Education 能力

簡介

Groovy 是 JVM 的一個替代語言 —替代 是指可以用 Groovy 在 Java 平臺上進行 Java 編程,使用方式基本與使用 Java 代碼的方式相同。在編寫新應用程序時,Groovy 代碼能夠與 Java 代碼很好地結合,也能用於擴展現有代碼。Groovy 的一個好處是,它的語法與 Java 語言的語法很相似。雖然 Groovy 的語法源於 Smalltalk 和 Ruby 這類語言的理念,但是可以將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。詳見:精通groovy

Groovy與java的對比

  1. java編寫簡單的helloworld
    然後分別進行編譯和運行c:>javac HelloWorld.javac:>java HelloWorld
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
  1. 用groovy編寫簡單的helloworld
    當您輸入println 時,Groovy會知道指的是 System.out
    然後運行:c:>groovy MyFirstExample.groovy
    代碼文件MyFirstExample.groovy:
println "Hello World!"
  1. 由此可見,我們並不需要編譯groovy文件,因為Groovy 屬於腳本語言。腳本語言的一個特點就是能夠在運行時進行解釋。(其實groovy也可以進行編譯,使用groovyc編譯產生標準的java字節碼),可見:用 Groovy 編寫的所有代碼都能夠通過標準 Java 運行時編譯和運行。
    另附:groovy簡單類文件,可見它不包含public,其中main也沒有類型。
class HelloWorld {
 static void main(args) {
   println "Hello World"
 }
}

Groovy是沒有類型的java代碼

  1. Java中聲明String變量:String value = “Hello World”;
    但是在groovy中:def value = "Hello World";,可見Groovy會根據對象的值來判斷它的類型,如果輸出println value,則控制臺會輸出Hello World,如果輸出println value.class,則控制臺會輸出“class java.lang.String”
  2. 在groovy中“一切都是對象”,groovy會自動推斷數據類型。

通過Groovy進行循環

  1. 定義一個獨立的函數
    可以看到它很像JavaScript,但是他就是java代碼,只不過用groovy的樣式編寫。repeat函數接受一個變量,調用函數會輸出val五次。另外for循環省略了int。
  2. 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集合

  1. 在 Java 中使用集合 — 導入 java.util 類,初始化集合,將項加入集合。這三個步驟都會增加不少代碼。而 Groovy 可以直接在語言內使用集合。在 Groovy 中,不需要導入專門的類,也不需要初始化對象。集合是語言本身的本地成員。Groovy 也使集合(或者列表)的操作變得非常容易,為增加和刪除項提供了直觀的幫助。

Groovy映射

Groovy 中的任何映射機制在幕後都是 java.util.Map 的實例。

  1. Java語言的映射
    JAVA語言中的映射是名稱-值對的集合,要用Java代碼創建典型的映射,必須像下面這樣操作:
Map<String, String>map = new HashMap<String, String>();
map.put("name", "Andy");
map.put("VPN-#","45");

一個HashMap實例容納兩個名稱-值對,每一個都是String的實例。

  1. 通過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之簡要總結