構建工具發展史:Ant -- > Maven --> Gradlejava
Gradle 由Groovy語言編寫,所以基於Groovy環境運行。編程
Groovy也是另一種爲DSL語言domain specific language,腳本編程語言,matlab是DSL語言的一種,專門用來計算的,還有UML建模語言,在建模方向上有專供。因此DSL語言只用於某一特定領域,也被稱爲領域語言。api
基於JVM開發的語言,因此可以使用java的庫,與java完美結合閉包
點擊這裏--》mac中搭建groovy環境dom
點擊這裏--》IDEA中建立Groovy簡單工程編程語言
和java很像,能夠建立類同於java的一個類,以下:工具
因此groovy的工程和java很類似,可是看上面的截圖你們會發現,"public"還有這個";"都是灰色的,表示無關緊要,這就是groovy的某一個與java區別的地方,一樣咱們也能夠把String[] 參數類型省略,那麼咱們省略以後也能輸出一樣的表達結果:this
還有一點就是,它與lua語言也有點相似,那就是能夠做爲腳本語言,那麼做爲腳本語言咱們也能夠不須要class的聲明,以下:lua
一樣的結果,因此咱們對這個簡單的瞭解以後咱們進入基礎語法的講解,畢竟groovy雖然與java差很少,但仍是有些不一樣的地方。spa
對象類型(沒有int double類型,都會轉換成Integer,Double)
強類型定義就是相似與java的形式,String name ="mujiutian",而弱類型定義的話,咱們相似於java10的var類型,有系統本身轉換爲本身認爲的數據類型,以下
由上咱們能夠看到數據類型就是GString,這個就是可擴展的類型,而後咱們能夠用'' 表示,一樣能夠用""表示。
def name = "mujiutian" def name1 = "osc" def name2 = 'oscChina' //name中間。兩邊字符串爲M,達到11長度 println name.center(11,"M") //在左邊添加2的字符串,達到9的長度 println name1.padLeft(9,"2") //比較兩個字符串大小 println name.compareTo(name1) //比較兩個字符串大小,和compareTo同樣 println name > name1 //獲取第一個字符 println name[0] //獲取0-3的字符 println name[0..3] //兩個字符串相減,前者必須包含後者 println name2.minus(name1) //和上面同樣 println name2 - name1 //反過來 println name2.reverse() println name2.capitalize()
結果爲:
MmujiutianM 222222osc -2 false m muji China China anihCcso OscChina
def var = 1.5 def result switch (var){ case "soo": result = "this is soo" break case Integer: result = "this is int type" break case [5,6,7,'in']: result = "hah" break case 10..90: result ='dsk' break case BigDecimal: result ='this is bigdecimal' break default: break } println result
結果爲:
this is bigdecimal
//直接循環 def sum1 = 0 for (i in 0..9){ sum1 +=i } //list循環 def sum2 =0 for (i in [1,2,3,4,5,6,7]){ sum2 +=i } //map循環 def sum3 =0 for (i in ['key1':1,'key2':2,'key3':3]){ sum +=i.value }
1.6.1 閉包概念:一個代碼塊
1.6.2 閉包參數:一個或者多個
1.6.3 閉包返回值:把println 換成return
def clouser = {String name -> return "hello ${name} " } def result = clouser.call('groovy') println(result)
閉包的用法相似與java8中的lambda表達式,以下:
int fab(int num){ int result = 1 //從1增長到num,downto(1,..)是降低到1 1.upto(num,{num1 -> result *= num1}) return result } int cal(int num){ int result =0 //起始值0 num.times { num1 -> result*=num1 } }
1.6.4閉包關鍵變量
this、owner、delegate