Groovy语法

Groovy语法,第1张

概述基本语法 1.Groovy注释标记和Java一样,支持//或者/**/ 2.Groovy语句可以不用分号结尾。Groovy为了尽量减少代码的输入 。 3.单引号 单引号中的内容严格对应Java中的String,不对$符号进行转义。 4.双引号 双引号的内容和脚本语言的处理有点像,它会对表达式先求值。 def x = 100def s1 = "i am $x dolloar"println( 基本语法

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。

switch
age = 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?.name
asType

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函数中。

@ToString

1.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语法所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存