表达式与运算符
可参考Groovy in Action P64
1、a==b 等价 a.equals(b)
2、Groovy的"===" 就是Java的"=="
3、Groovy支持操作符重载,重载运算符对应的方法就是操作符重载
5、?: 安全引用操作符(防止NullPointerException),在方法调用前面添加一个?就相当于再调用前面放了一个条件,
可以防止在null对象上调用方法。?操作符时刻都非常有用,可以极大地减少条件语句。
基于方法的运算符
- 4+3 ==7 //4.plus(3)
- 4-3 ==1 //4.minus(3)
- 4*3 ==12 //4.multiply(12)
- 4%3 ==1 //4.mod(3)
- 4**3 ==64 //4.power(3)
- 4/3 ==1.33333 //4.div(3)
- 4.intdiv(3) ==1 //整除
- !(4==3) //!(4.equals(3))
- 4!=3 //!4.equals(3)
- !(4<3) //4.compareto(3) <0
- !(4<=3) //4.compareto(3) <=0
- 4>3 //4.compareto(3) >0
- 4>=3 //4.compareto(3) >=0
- 4<=>3 ==1 //左边 > 右边 结果 1
- 4<=>8 ==-1 //左边 < 右边 结果 -1
- 4<=>4 ==0 //两边相等 结果 0
字符串GString简介
1、def str = 'hello/nclat'; print str //在同一行放多条语句 需用 ";" 分隔
可以用双影,也可以用单影.
2、def name = 'clat'
print "/thello${name}" //如果字符串中需要用到变量,则必须用双影号。
3、原格式输出://三个单影号
print '''
aaa
bbb
'''
4、三个双引号,可解释其中的GString
def name='clat'
print """
aaa
/tbbb
${name}
"""
Groovy 方法一
def welcome1(name){
print "Hello${name}"
}
welcome1('clat')
//输出: 'Hello clat'
Groovy 方法二
def welcome2(name,welcomeStr='Welcome'){
println "${welcomeStr} ${name}"
}
welcome2('clat') //输出 Welcome clat
welcome2('clat','Good') //输出 Good clat
流程控制:循环
1、def count =1; def limit = 5
while(count <=limit){
println "count : ${count}"
count++
}
2、for( i=0;i<5;i++){ println 'Hello'}
3、for( i in [1,2,3,4,5]){ // 可以用在范围或映射或GString上
print i
}
4、break 和 continue 与Java一样
流程控制:判断
1、if(1){println 'good'} //输出: good
2、def a
if(a){println 'good'}
else {println 'null'}//输出null
3、def b = []
if(b){println 'good'}
else{println 'null'}//输出null
4、def c =[1:'Groovy',2:'clat']
if(c) {println 'good'}
else {println 'null'}
5、if的条件除了是布尔值外,也可以使对象,如果对象是空则为false,否则为true
switch
1、这里与Java一样
switch(4){
case 1: println 'One' ;break
case 2: println 'Two' ;break
case 3: println 'Three' ;break
case 4: println 'Four' ;break
default: println 'Default'
}//输出 Four
2、结合的类型比Java多
// var 可以改为 12,10,2,1.5f,8,123,1234在运行
def var =0
switch(var){
cast 0; print 'One'
cast 11..20; print 'One' // 11 到 20之间的值
cast '10'; print 'One'
cast [1,3]; print 'One' //匹配1,2,3
cast Float; print 'One' //匹配1.5f
cast {it % 3 ==0};print 'One' //闭包,it闭包变量 如果var = 9,匹配
cast ~'[0-9]{3}'; print 'One' //正则 匹配123
default: print 'Default'
}
控制台输入输出
1、读取标准输入:
- def name = new BufferedReader(new InputStreamReader(system.in)).readLine()
- println "your name is ${name}"
2、标准输出
- println
3、格式化输出: printf
printf('%d-%f-/n[%s][%10s][%-10s]',[5,2.5,'clat,'clat','clat''])
%-10s: 宽度10,左侧输出字符串
结果:
5-2.500000-
[clat] [ clat][clat ]