1. 程式人生 > >Groovy入門-語法規範

Groovy入門-語法規範

直接來源於Java語法的特性
1.關鍵字於語法
2.類,介面,屬性,方法的定義
3.使用new建立物件
4.包匯入機制
5.try/catch/finally異常處理機制
6.運算子,表示式,複製
7.控制結構
8.程式碼註釋

groovy自動匯入如下包
groovy.lang.*
groovy.util.*
java.lang.*
jaav.util.*
java.util.regex.*
java.net.*
java.io.*
java.math.BigDecimal
java.math.BigInteger

數值
Groovy的一切都是物件。可以自動裝箱與拆箱。
整數123,-12,0都是Integer類的物件
def price = 100 < == > Integer price = new Integer(100)
語句可以不用’;’結尾
浮點數1.5,-3.14都是BigDecimal類的物件
數值型別:
Integer
Long
Float
Double
java.math.BigDecimal
java.math.BigInteger

GDK數值方法

def store = ''
10.times{ store += 'X' }  assert store == 'XXXXXXXXXX'

store = ''
1.upto(5){ number -> store += number }  assert store == '12345'

store = ''
2.downto(-1){ number -> store += number + ' ' }  assert store == '2 1 0 -1 -2'

store = ''
0.step(0.5,0.1){ number -> store += number
+ ' ' } assert store == '0 0.1 0.2 0.3 0.4 0.5'

表示式與運算子

基於方法的運算子(參考英文版Groovy in Action 第64頁)

assert 4+3 == 7                 //4.plus(3)
assert 4-3 == 1                 //4.minus(3)
assert 4*3 == 12                //4.multiply(3)
assert 4%3 == 1                 //4.mod(3)
assert 4**3 == 64               //4.power(3)
assert 4/3 == 1.3333333333 //4.div(3) assert 4.intdiv(3) == 1 //整除 assert !(4 == 3) //!(4.equals(3)) assert 4 != 3 //!4.equals(3) assert !(4 < 3) //4.compareTo(3) < 0 assert !(4 <= 3) //4.compareTo(3) <= 0 assert 4 > 3 //4.compareTo(3) > 0 assert 4 >= 3 //4.compareTo(3) >= 0 assert 4 <=> 3 == 1 //4.compareTo(3) assert 4 <=> 8 == -1 //4.compareTo(8) assert 4 <=> 4 == 0 //4.compareTo(4)

a == b 等價 a.equals(b)
Groovy 的 “==”就是Java的 “==”
Groovy 支援操作符過載,過載運算子對應的方法就是操作符過載
<< 操作符被過載,以支援向集合新增項
?:安全引用操作符(防止NullPointerException),在方法呼叫前面新增一個?就相當於在呼叫前面放了一個條件,可以防止在null物件上呼叫方法。 ?操作符時刻都非常有用,可以極大地減少條件語句。

字串GString簡介

def str = ‘hello\nlxt008’; prin str
//在同一行放多條語句‘;’不能少
def name = ‘lxt008’
print “\thello name\t\nprintaaabbbGStringdefname=lxt008printaaa\tbbb {name}
“”“”“”
${name} 會解釋為lxt008
GString簡化了編寫多行字串和進行執行時替換功能

Groovy 方法一
1.可以直接使用Java的方法
2.變數作用域與Java方法類似
3.可以使用動態型別或者靜態型別
4.可以省略return,預設返回最後語句的值

def welcome1(name){
  println "Hello ${name"
}
welcome1('lxt008')
//輸出:Hello lxt008

Groovy 方法二

def welcome2(name,welcomeStr='Welcome'){
    println "${welcomeStr} ${name}"
}
welcome2('lxt007')    //輸出:Welcome lxt007
welcome2('lxt008','Good')    //輸出:Good lxt008

方法引數是傳值呼叫

def printName(name){
    println "Name (at entry): ${name}"
    name = 'lxt001'
    println "Name (after assignment): ${name}"
}
def tutor = 'lxt008'
printName(tutor)                //Name (at entry): lxt008
                                //Name (at assignment): lxt001
println "Tutpor: ${tutor}"      //輸出:Tutor:lxt008

break 與 continue 與 Java一樣
if 的條件除了是布林值外,也可以是物件,如物件是空則條件為false,否則為true
**讀取標準輸入:
def name = new BufferedReader(new InputStreamReader(System.in)).readLine()
System.in.readLine()已經被廢除,使用出錯**