Groovy常用语法汇总

it2026-04-01  10

基本语法

1.Grovvy的注释分为//和/**/和java的一样.

2.Grovvy语法可以不已分号结尾.

3.单引号,里面的内容严格的对应java中的String,不对$符号进行转义.

def s1 = 'i am a student $' println s1 i am a student $

4.双引号“ ”的内容中如果有$号的话,会先对表达式先求值.

def age = 100 def s2 = "他已经 $age 岁了" println(s2) 他已经 100 岁了

5.三个引号中的字符串支持随意的换行.

def s3 = ''' x y z ''' println(s3) x y z

定义变量

Grovvy中支持动态类型,定义变量的时候可以不指定类型,Grovvy中可以使用关键字def.

def a = 1 def b = "我是谁" def double = 1.0

定义函数

def fun(){ } fun() def fun1(def1,def2){ println def1+" &&"+def2 } fun1(1,2) String fun2(){ return "返回值" } println fun2() def getSomething(){ "我是谁" 1000 } println getSomething()

注意:

1.无返回类型的函数定义,必须使用def关键字 ,最后一行代码的执行结果就是本函数的返回值

2.如果指定了函数返回类型,则可不必加def关键字来定义函数

断言assert

断言变量为空

def t1 = null assert t1

断言变量的长度

def t2 = "ab3" assert t2.size() >3

注意:

1.如果断言发生,断言后面的代码无法执行

循环For

方式一

for (i=0;i<5;i++){ println i }

方式二

for(i in 0..5){ println i }

其它

for(i in 0..<5){ println ("hello world") }

循环time

times表示从0开始循环到4结束

4.times { println it }

三目运算符

def name = 'd' def result = name=='d'?'cc':"abc" println result

捕获异常

try { 5/0 }catch(Exception e){ e.printStackTrace() }

Switch

age = 36 def rate switch (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 println person?.Data?.name

asType

asType就是数据类型转换

def g1 = '1' def f1= g1 as int def f2 = g1.asType(Integer) println f2

Groovy数据类型

Groovy中的数据类型主要分2种

一个是Java中的基本数据类型。

另外一个是Groovy中的容器类。

最后一个非常重要的是闭包。

      Java 基本类型

def boolean b1 = true println b1 def int b2 = 100 def String b3 = "hello world" if(b1){ println "hello world" }

      Groovy 容器

List:链表,其底层对应Java中的List接口,一般用ArrayList作为真正的实现类。 Map:键-值表,其底层对应Java中的LinkedHashMap。 Range:范围,它其实是List的一种拓展。

 List

def aList = [5,'string',false] println aList println aList[0] println "集合的长度:"+aList.size() aList[10] = 'sss' println aList [5, string, false] 5 集合长度:3 [5, string, false, null, null, null, null, null, null, null, 'sss'] 集合长度:11

 map

def map = [key1:"value1",key2:"value2",key3:"value3"] println map println "map的长度:"+map.size() println map.keySet() println map.values() println map.key1 println map.get("key1") map.put("key4","value4") println map.entrySet() Iterator it = map.iterator() while(it.hasNext()){ println "遍历map:"+it.next() } map.containsKey("key1") map.containsValue("values1") map.clear() Set set = map.keySet()

range

Range 是 Groovy 对 List 的一种拓展.

def range = 1..5 println range println "长度:"+range.size() println "迭代器:"+range.iterator() println "获取标号为1的元素:" +range.get(1) println "是否包含元素5:"+range.contains(5) println "最后一个元素:"+range.last() //println "移除标号为1的元素:"+range.remove(1) //清空列表 //range.clear() println "第一个数据:"+range.from println "最后一个数据:"+range.to

闭包

模板

def xxx = {paramters -> code} //或者 def xxx = {无参数,纯code} def fun1 = { p1 -> def s = "我是一个闭包,"+ p1 } println(fun1.call()) println(fun1.call("我是一个参数")) println fun1("我是参数2")

闭包没定义参数的话,则隐含有一个参数,这个参数名字叫it,和this的作用类似。it代表闭包的参数。

def fun2 = { it -> "abcd" } println fun2.call()

如果在闭包定义时,采用下面这种写法,则表示闭包没有参数!

def fun3 = { -> "cccc" } println fun3.call()

省略圆括号

def list = [1,2,3] list.each { println it } 1 2 3

each函数调用的圆括号不见了!原来,Groovy中,当函数的最后一个参数是闭包的话,可以省略圆括号。比如:

def fun5(int a1,String b1,Closure closure){ closure() } fun5(5,"test",{ println "i am in closure" })

以后这样代码会比较多:

task hello{ doLast{ println("hello world") } }

案列1:

//字符串与闭包的结合使用 String str2 = 'the 2 and 4 is 6' //each str2.each { String temp ->println temp } //find来查找符合条件的第一个 println str2.find{ String s -> s.isNumber() } //findAll def sList = str2.findAll{ String s1 -> s1.isNumber() } println sList //any def result = str2.any{ String s -> s.isNumber() } println result //collect def list2 = str2.collect { it.toUpperCase() } println list2.toListString()

Java属性

public class Person{ def String name; def int age; String getName() { return name } void setName(String name) { this.name = name } int getAge() { return age } void setAge(int age) { this.age = age } @Override String toString() { return "Person{"+ "name='"+name+'\''+ ",age=" + age+ '}'; } } Person person = new Person() person.setName("Test") person.setAge(20) println(person.toString())

 

转载于:https://www.cnblogs.com/cleveraboy/p/10269798.html

相关资源:数据结构—成绩单生成器
最新回复(0)