Groovy的方法定義使用def關鍵字,而且參數名後面的括號不能去掉,與java不一樣的是不須要參數類型和返回值類型。java
class MethodPractice { static main(args) { def obj = new MethodPractice(); def num = obj.method1(0); println num; //null println obj.method2(); //2 println obj.method3(); //3 } def method1(arg1, arg2 = 1) { println arg1; println arg2; } def method2() { 1; 2; } def method3() { return 3; println 2; } }
如上方法的參數能夠設默認值,當這個參數沒有傳入時,使用默認值,同時每一個方法或表達式都是有返回值的,沒有明確指定return時,默認返回最後執行語句的值,return以後的語句不會被執行。正則表達式
while:spa
與Java語法類似,當while內的代碼只有一行時能夠去除{}code
for:string
for (variable in range) | for (variable in array) | for (variable in string) | for (variable in hash)hash
class IteratorPractice { static main(args) { def hash = [ 'rex' : 1, 'david' : 2, 'john' : 3 ]; for (user in hash) println "${user.key} : ${user.value}"; for (str in "Hello") println str; for (num in 1..10) println num; for (num in [1, 2, 3, 4]) println num; } }
for循環遍歷Hash時,variable.value是hash的值,varuable.key是hash的key,當for循環裏的代碼只有一行時也能夠去除{}簡寫。it
if:for循環
用法與Java一致,只是當if或else中的代碼只有一行,那麼能夠去掉{}簡寫class
switch|case|default:循環
用法與Java一致,只是groovy的case後面支持的驗證方式更增強大,支持range、array、regex,當swotch傳入參數值在range範圍中,或在array中存在,或匹配正則表達式,將執行case後的語句;
break|continue:
用法同Java一致