1.Groovy注释标记和Java一样,支持//或者/**/
2.Groovy语句可以不用分号结尾。Groovy为了尽量减少代码的输入 。
3.单引号
单引号中的内容严格对应Java中的String,不对$符号进行转义。
4.双引号
双引号的内容和脚本语言的处理有点像,它会对表达式先求值。
def x = 100def s1 = "i am $x dolloar"println( s1 )
5.三引号
三引号中的字符串支持随意换行。
def s1 = ''' xyzf'''println(s1)定义变量
Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以使用关键字def,注意,虽然def不是必须的,但是为了代码清晰,建议还是使用def关键字。
def a = 1 //定义一个整形def b = "字符串" //定义一个字符串def double c = 1.0 //定义一个 double 类型,也可以指定变量类型定义函数
无返回类型的函数定义,必须使用def关键字,最后一行代码的执行结果就是本函数的返回值。如果指定了函返回类型,则可不必加def关键字来定义函数。可以不使用return来设置函数返回值,如果不使用return的话,则函数里最后一句代码的执行结果被设置成返回值。
String fun3(){ return "返回值"}断言
(1)断言变量为空
def s1 = nullassert s1
(2)断言变量的长度
def s2 = "abc"assert s2.size()>3
如果断言发生,断言后面的代码无法执行。
循环for (i = 0; i < 5 ; i++) { println("测试")}
for (i in 0..5){ println("hello world")}循环time
times表示从0开始循环到4结束
4.times { println it}三目运算符
java语法
def namedef result = name != null ? name : "abc"println(result)
groovy语法
def name = 'd'def result = name?: "abc"捕获异常
//第一种写法,Java 写法try { println 5 / 0} catch (Exception e) {}//第二种写法,Groovy 写法try { println 5 / 0} catch (anything) {}
这里的any并不包括Throwable,如果你真想捕获everything,你必须明确的标明你想捕获的Throwable。
switchage = 36def rateswitch (age) { case 10..26: rate = 0.05 break case 27..36: rate = 0.06 break case 37..46: rate = 0.07 break default: throw new IllegalArgumentException()}println( rate)判断是否为真
Person person//Java 写法if (person!= null){ if (person.Data!=null){ println person.Data.name }}//Groovyprintln person?.Data?.nameasType
asType就是数据类型转换
//String 转成 int def s2 = s1 as int//String 转成 int def s3 = s1.asType(Integer)Groovy数据类型
(1)一个是Java中的左本数据类型。
(2)另外一个是Groovy的容器类。
List:其底层对应Java中的List接口,一般用ArrayList作为真正的实现类。
//变量定义:List变量由[]定义,其元素可以是任何对象def aList = [5,'string',false]println(aList)println aList[0] //获取第1个数据println aList[1] //获取第2个数据println aList[2] //获取第3个数据println aList[3] //获取第4个数据println( "集合长度:" + aList.size())//赋值aList[10] = 100 //给第10个值赋值aList<<10 //在 aList 里面添加数据println aListprintln "集合长度:" + aList.size()
Map:其底层对应Java中的linkedHashMap
def map = [key1: "value1",key2: "value2",key3: "value3"]println map//[key1:value1,key2:value2,key3:value3]println("数据长度:" + map.size())//数据长度:3println(map.keySet())//[key1,key2,key3]println(map.values())//[value1,value2,value3]println("key1的值:" + map.key1)//key1的值:value1println("key1的值:" + map.get("key1"))//key1的值:value1//赋值map.put("key4","value4")Iterator it = map.iterator()while (it.hasNext()) { println "遍历map: " + it.next()}//遍历map: key1=value1//遍历map: key2=value2//遍历map: key3=value3//遍历map: key4=value4map.containsKey("key1") //判断map是否包含某个keymap.containsValue("values1") //判断map是否包含某个valuesmap.clear() //清除map里面的内容Set set = map.keySet(); //把 map 的key值转换为 set
Range:它其实是List的一种拓展。
def range = 1..5println(range)//[1,2,3,4,5]range.size() //长度range.iterator() //迭代器def s1 = range.get(1) //获取标号为1的元素range.contains( 5) //是否包含元素5range.last() //最后一个元素range.remove(1) //移除标号为1的元素range.clear() //清空列表
(3)最后一个非常重要的闭包。
闭包,英语叫Closure,是Groovy中非常重要的一个数据类型或者说一种概念。闭包,是一种数据类型,它代表一段可执行的代码。
def xxx = {paramters -> code} //或者 def xxx = {无参数,纯code}
从c\c++语言的角度看,闭包和函数指针很像,闭包定义好后,要调用它的方法就是:
闭包对象.call(参数)
或者更像函数指针调用的方法:
闭包对象(参数)
aClosure.call("this is string",100) //或者 aClosure("this is string",100)省略圆括号
Groovy中,当函数的最后一个参数是闭包的话,可以省略圆括号。
def fun(int a1,String b1,Closure closure){ //dosomething closure() //调用闭包 }
fun (4,"test",{ println"i am in closure" })
再识Groovy
Groovy会先把xxx.groovy中的内容转换成.class文件,每个.class文件都默认有静态main方法,这样,当我们groovy xxx.groovy的时候,其实就是用java去执行这个main函数。
脚本中的所有代码都会放到run函数中。
@ToString1.includenames false 显示的时候是否带上属性的名称,比如name=Groovy In Action
2.excludes 哪些属性不显示。
3.includes 要显示哪些属性。
4.includeSuper false 是否显示父类的ToString效果。
5.includeSuperPropertIEs false 是否显示父类的属性。
6.includeFIElds false 是否显示类字段(比如private字段,public的会自动转成属性)。
7.ignoreNulls false 是否忽略NulL值。
8.includePackage false 类名是否包含包名。
9.cache false 是否把ToString的值缓存起来。
作用域public(默认)、private、 protected
*. *** 作*** 作的对象是一个List对象
参考文档:http://www.groovy-lang.org/API.HTML
总结以上是内存溢出为你收集整理的Groovy语法全部内容,希望文章能够帮你解决Groovy语法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)