groovy程序设计
/********* * groovy中Object类型存在隐式转换 可以不必使用as强转 */ Object munber = 9.343444 def number1 = 2 println munber - number1 if (number1 < munber) { println '转换了' } /************ * 测试groovy中空字符串运算 */ def str1 = "8" def str2 = "-1" def str3 = "*2" GroovyShell shell = new GroovyShell() println shell.evaluate(str1 + str2) println shell.evaluate(str1 + str3) /** * 测试字符串 */ def str5 = 'java' def str6 = 'java ' println str5 == str6 println str5.trim() == str6.trim() /**** * 测试运算符号 */ def num = 2 def num1 = 3 println num << num1 /**************** * 测试 进程 */ println 'cmd /C dir'.execute().text /************** * 安全导航操作符的使用 * ?. 操作符只有对象引用不为空时才会分派调用 */ def str7 = null def str8 = 'jiao' println str7?.reverse() // 不加问好会报错 空指针异常 println str8.reverse() /**** * 使用多赋值 */ def fullName( fullname) { fullname.split(' ') } def ( first, last ) = fullName ('jiao xi') println " $first , $last"
/***********
* 多赋值
* 多余的变量将会设置为null , 多余的值会被 丢弃 。
*/
def ( String cat , String mouse ) = [ 'Tom', 'Jerry', 'Tyke']
def ( String cat1 , String mouse1, String dog ) = [ 'Tom', 'Jerry']
println "$cat and $mouse "
println "$cat1 and $mouse1 and $dog "
/**************
* groovy 中的bool值判定
*
* 类型 为真的条件
* Boolean 值为true
* Collection 集合不为空
* Character 值不为0
* CharSequence 长度大于0
* Iterator hasNext() 为true
* Number Double值不为0
* Map 该映射不为空
* Matcher 至少有一个匹配
* Object[] 长度大于0
* 其他任何类型 引用不为null
*
*/
/****
* 闭包懒加载
*/
def number = 1
def eagerGString = "value == ${number}"
def lazyGString = "value == ${ -> number }"
assert eagerGString == "value == 1"
assert lazyGString == "value == 1"
number = 2
assert eagerGString == "value == 1"
assert lazyGString == "value == 2"
/***********
* *操作符
*/
int function(int x, int y, int z) {
x*y+z
}
def args = [4,5,6]
assert function(*args) == 26
gogogo