加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy笔记(2)_表达式与运算符

发布时间:2020-12-14 17:06:38 所属栏目:大数据 来源:网络整理
导读:表达式与运算符 ? 可参考Groovy in Action P64 ? 1、a==b 等价 a.equals(b) 2、Groovy的"===" 就是Java的"==" 3、Groovy支持操作符重载,重载运算符对应的方法就是操作符重载 4、操作符被重载,以支持向集合添加项。 5、?: 安全引用操作符(防止NullPointerE

表达式与运算符

?

可参考Groovy in Action P64

?

1、a==b 等价 a.equals(b)

2、Groovy的"===" 就是Java的"=="

3、Groovy支持操作符重载,重载运算符对应的方法就是操作符重载

4、<<操作符被重载,以支持向集合添加项。

5、?: 安全引用操作符(防止NullPointerException),在方法调用前面添加一个?就相当于再调用前面放了一个条件,

?????可以防止在null对象上调用方法。?操作符时刻都非常有用,可以极大地减少条件语句。

?

?

基于方法的运算符

?

  1. 4+3 ==7??????????????????????????????? //4.plus(3)
  2. 4-3 ==1???????????????????????????????? //4.minus(3)
  3. 4*3 ==12????????????????????????????? //4.multiply(12)
  4. 4%3 ==1?????????????????????????????? //4.mod(3)
  5. 4**3 ==64????????????????????????????//4.power(3)
  6. 4/3 ==1.33333????????????????????? //4.div(3)
  7. 4.intdiv(3) ==1??????????????????????//整除
  8. !(4==3)?????????????????????????????????//!(4.equals(3))
  9. 4!=3????????????????????????????????????? //!4.equals(3)
  10. !(4<3)???????????????????????????????????//4.compareTo(3) <0
  11. !(4<=3)?????????????????????????????????//4.compareTo(3) <=0
  12. 4>3?????????????????????????????????????? //4.compareTo(3) >0
  13. 4>=3?????????????????????????????????????//4.compareTo(3) >=0
  14. 4<=>3 ==1?????????????????????????? //左边 > 右边 结果 1
  15. 4<=>8 ==-1????????????????????????? //左边 < 右边 结果 -1
  16. 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 方法一

  • 可以直接使用Java的方法
  • 变量作用域与Java方法类似。
  • 可以使用动态类型或者静态类型。
  • 可以省略return,默认返回最后语句的值。

def welcome1(name){

? print "Hello${name}"

}

welcome1('clat')

//输出: 'Hello clat'

?

?

Groovy 方法二

  • Groovy方法可以使用默认参数。

def welcome2(name,welcomeStr='Welcome'){

??? println "${welcomeStr} ${name}"

}

welcome2('clat') //输出 Welcome clat

welcome2('clat','Good') //输出 Good clat

  • 优先选择精确匹配参数类型,再匹配个数的方法,如果有 def welcome2(name),此方法优先
  • 方法参数是传值调用

?

流程控制:循环

?

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、标准输出

  • print?
  • println

3、格式化输出: printf

printf('%d-%f-/n[%s][%10s][%-10s]',[5,2.5,'clat,'clat','clat''])

%d: 按整型数据??? %f:按浮点型输出?????%s 字符串输出

%-10s: 宽度10,左侧输出字符串

?

结果:

5-2.500000-

[clat] [????? clat][clat????? ]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读