Groovy学习笔记

Groovy学习笔记,第1张

概述由于工作需要,今天看了看Groovy,下面是学习过程的学习笔记: 基本原则:Java完全可以调用Groovy写好的类;Groovy完全可以调用Java写好的类;即使不使用Groovy的特有的语法,可以使用Java中的绝大部分传统写法。 1 如果使用 groovy.lang.*,grooby.util.*,java.lang.*,java.util.*,java.net.*中的类的时候无需impor 由于工作需要,今天看了看Groovy,下面是学习过程的学习笔记:
基本原则:Java完全可以调用Groovy写好的类;Groovy完全可以调用Java写好的类;即使不使用Groovy的特有的语法,可以使用Java中的绝大部分传统写法。
1 如果使用 groovy.lang.*,grooby.util.*,java.lang.*,java.util.*,java.net.*中的类的时候无需import。
2、支持assert,比如assert 1==1,assert(true)
更高级的用法:assert('text'.3<<'hello').size==4*3+5
3、groovy支持弱类型声明def x=1
4、GroovyBean
class Book
{
   String Title;//声明的是属性,而非字段
}
def g = new Book()
print g.Title
print g.getTitle()
5 groovy中的==表示等于(equality),而非同一(IDentity),这与java不同。
6 def nick = 'Gina'
def book = 'Groovy'
assert '$nick is $book' = 'Gina is Groovy'
7 使用正则判断字符串匹配:assert '12345'=~/\d+/
8 groovy中可以直接对Integer类型使用四则运算,可以对int类型调用toString方法。
9 使用List:
def r =['a','b','c']
assert r[0]='a'
assert r.size()==9
使用map:
def http=[100:"cont",200:'ok']
assert http[200]=='ok'
http[800]='what?'
使用ranges:
def x=1..10
assert x.contains(5)
10 闭包:
(1)[1,2,3].each{entry->println entry}
(2)累加计算:其中upto表示从1遍历到10
def  counter=0
1.upto(10)
{
   number->
   counter = counter+number
}
println counter
11 动态执行:evaluate('1+2') 会打印出3
12 groovy中类型可以弱类型声明,也可以强类型声明,并且声明的时候会自动进行Boxing,比如def a=1是可以的,int a=1也是可以的,而且第二种用法中声明的a是Integer类型的。
13 Groovy支持运算符重载,其实现方式和python类似,也就是类只要实现某个方法即可实现运算符重载,下面是运算符和对应方法:+ plus;- minus;* multiply;/ div;% mod;++ next;-- prevIoUs;** power;| or;& and;^ xor;~ negate;a[b] a.getAt(b);a[b] = c a.putAt(b,c);a<<b a.leftShift(b);a>>b a.rightShift(b);a>>>b a rightShiftUnsigned(b);
switch(a){case b:} b.isCase(a);a==b a.equals(b);
a<=>b a.compareto(b);
a>b a.compareto(b)>0;
a>=b a.compareto(b)>=0;
a<b a.compareto(b)<0;
a<=b a.compareto(b)<=0;
a as type a.asType(typeClass)
14 字符串 *** 作:
g="Hello Grooby!"
assert g[6..11] == 'Groovy'
assert g.count('0')==3
assert 'x'.padleft(3)=='  x'
assert 'x'.padright(3,'_')=='x__'
assert 'x'.center(3)==' x '
assert 'x'*3=='xxx'
15 字符串的leftShift和切片的应用
g='Hello'
g<<' Groovy'
assert g instanceof java.lang.StringBuffer
g<<'!'
assert g.toString()=='Hello Groovy!'
g[1..4] = 'i'//替换ello为i,切片的典型应用
assert g.toString()=='Hi Grooby!'
List等collection类型同样支持切片
16 数字的方法:
def s = ''
10.times{s+='x'}
10.downto(0){x+='d'}
s=''
0.step(0.5,0.1){number->
s+=number+' '
}
assert s=='0 0.1 0.2 0.3 0.4'
17 List的常见 *** 作
assert [1,[2,3]].flattern()==[1,3]//扁平化
assert [1,3].intersect([4,3,1])==[3,1]//交集
assert [1,3].disjoint([4.5,6])
List = [1,3]
assert List.pop()==3//像使用堆栈一样
assert [3,1,2].sort()==[1,3]
assert [1]==[1,1].unique()//去掉重复元素 def List=[1,3]
assert List.count(2)==1
assert List.max()==3
assert List.min()==1
def even = List.find{item->
 item%2==0
}
assert even ==2
assert List.every{item->
 item<5
}//所有的都小于5
assert List.any{item->
 item<2
}//任何一个小于5
List.reverseEach{item->
 store+=item
}//反向遍历 assert [1,3].join('-')=='1-2-3'
for(i in [1,3])
{
   println i
}
18 文件处理:
new file('a.txt').eachline{println it}
19 groovy中xml处理非常简单,可以参考blogjava上的一篇名为“Groovy高效编程――生成XML文件”的文章。
20 Groovy中使用Swing构建界面:
import grooby.swing.SwingBuilder swing = new SwingBuilder() frame = swing.frame(titile:'Demo'){   menubar{     menu('file'){         menuItem 'New'         menuItem 'Open'     }   }   panle{     label 'Label my'     slIDer()     comboBox(items:['1','2','3'])   } } frame.pack() frame.show() 21 groovy中简化了jdbc访问数据库的方法,提供了execute、eachRow等方法,无需开发人员关心关闭连接等问题。 22 java中运行grooby脚本的方法: groovyshell shell = new groovyshell() Object result = shell.evaluate("12+23") 23 Groovy解析引擎的类为GroovyScriptEngine def engine = new GroovyScriptEngine(".") def value = engine.run("test/MyScript.grooby",new Binding()) 总结

以上是内存溢出为你收集整理的Groovy学习笔记全部内容,希望文章能够帮你解决Groovy学习笔记所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1268870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存