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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值