groovy 基本语法 <1>
数值
groovy 中数字表现为对象,都是Interge的实例
1 | graph TD; |
字符串
可以使用单引号(''
),双引号(""
),三引号(''''''
)三个单引号
双引号""
内可使用${var.field}
直接写代码
三引号''''''
可写多行换行
1 | package primary |
输出:
1 | 石头人 |
范围
groovy的特殊语法可以用 rang来表示一个范围内的序列
例如
1 | static void main(String[] args) { |
输出结果为:
1 | 1 |
groovy的范围序列由首尾两个值表示,可以包含,也可以排除
1..<10
:不包含10的序列'a'..'x'
:字符序列'a'..'B'
:结果为 (a`_^][ZYXWVUTSRQPONMLKJIHGFEDCB),这种序列顺序是按照ASCII码排列,同时可以降序序号 方法 用法 描述 1 contains() println(b.contains(a)) 包含 2 get() 获取位置元素,同数组下标一致,从0开始 3 getFrom() 获取上限 4 getTo() 获取下限 5 isReverse() 是否逆序 6 subList() b.subList(0,2) 截取子序列,有趣的是,序列是 逆序
的时候,只能获取下限所在的元素
列表
简介
groovy里面的列表形式就是数组,列表里面可以用是不同类型的元素,例如:
1 |
|
结果:
1 | a |
在尾部添加元素:
1 | list1.plus('ddd') |
等效于:
1 | list1 + 'ddd' |
同理:
1 | list1.minus('a') |
这里取得的是子列表,不会对原列表产生影响,相当于数组对象
常用方法
方法 | 例子 | 描述 | |
---|---|---|---|
add() | list2.add(1) | 将新值添加到列表末尾 | |
remove() | remove(‘1’)/remove(1) | 删除指定index的元素或者指定元素,有意思的地方在于 当你删除[1]中的元素’1’时,不能通过删除元素的方式, index的优先级是高于元素的remove,会报错超出数组 |
|
get() | list2.get(1) | 和list2[1]效果一样 | |
pop() | list2.pop() | 彭,弹出第一个元素,值得一提的是groovy之前,这个函数是删除最后一个元素 完全相反的实现,有点东西 |
映射
就是map啊,别名有:字典、关联数组巴拉巴拉。就是散列键值对。
1 | def m = ['name':"张三",'age':1] |
方法和java没啥区别
put
,get
时间
用的java.util.Date,没区别,也能用jdk8的LocalDateTime :-P
正则表达式
可以直接作为if表达式的条件
1 | def a = ~'Gro*vy' |
异常处理
和java一样,毕竟都是jvm :-)
1 | try { |
面向对象
和java一样
- 接口
- 抽象类
- 内部类
- 继承多态
- 泛型
特征
groovy的特征 trait 就是有默认方法,同时有自己参数 的接口,参数和方法都可以被实现类继承,特征之间可以继承
1 | package primary |
结果为
1 | student marks is running |
话说,java interface
也可以用默认方法
闭包
闭包就是匿名代码块
1 | def a = 'a' |
闭包可以调用形参,可以使用变量
1 | def a = 'world' |
可以作为参数传递
1 | static void main(String[] args) { |
可以在遍历中使用闭包
1 | def list = 'a'..'f' |
集合常用的方法
1 | println list.find { it > 'b' } |
结果为:
1 | c |
find、findAll是过滤,every、any是判断,collect是获取数据转换获取结果集。
注释
单行
多行
1 | // |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿尔忒弥斯的笔记!
评论