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一致