w3cschool-Groovy 教程
Groovy的特点
Groovy中有以下特点:
- 同时支持静态和动态类型。
- 支持运算符重载。
- 本地语法列表和关联数组。
- 对正则表达式的本地支持。
- 各种标记语言,如XML和HTML原生支持。
- Groovy对于Java开发人员来说很简单,因为Java和Groovy的语法非常相似。
- 您可以使用现有的Java库。
- Groovy扩展了java.lang.Object。
Groovy 环境
groovy---安装指南
brew install groovy
export GROOVY_HOME=/usr/local/opt/groovy/libexec
看到这个说明已经安装好了, 然后有一段话:
You should set GROOVY_HOME: export GROOVY_HOME=/usr/local/opt/groovy/libexec
意思是你应该设置groovy环境变量
vi ~/.bash_profile
将下面的语句添加进去
GROOVY_HOME: export GROOVY_HOME=/usr/local/opt/groovy/libexec
然后使用groovy -version命令去查看下
hanwenda@bogon bin % vi ~/.bash_profile
hanwenda@bogon bin % source ~/.bash_profile
hanwenda@bogon bin % groovy -veresion
Groovy Version: 4.0.0 JVM: 1.8.0_321 Vendor: Oracle Corporation OS: Mac OS X
有多种方式来获得的Groovy环境设置。
下载和安装 -进入该链接www.groovy-lang.org/download.html获得Windows安装程序部分。
启动Groovy安装程序,然后请执行以下完成安装步骤。
第1步 -选择语言安装程序。
第2步 -点击下一步按钮。
第3步 -点击“我同意”按钮。
第4步 -接受默认组件,然后单击下一步按钮。
第5步 -选择适当的目标文件夹,然后单击下一步按钮。
第6步 -点击安装按钮开始安装。
第7步 -一旦安装完成后,单击下一步按钮开始配置。
第8步 -选择默认选项,并单击下一步按钮。
第9步 -接受默认的文件关联,然后单击下一步按钮。
第10步 -单击Finish按钮完成安装。
一旦上述步骤之后,你就可以开始使用Groovy shell,有助于测试我们的Groovy,而不需要为Groovy提供一个完整的集成开发环境。可以通过在命令提示符下命令groovysh来完成。
Gradle
'org.codehaus.groovy:groovy:2.4.5'
Maven
<groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>2.4.5</version>
内置数据类型
Groovy提供多种内置数据类型。以下是在Groovy中定义的数据类型的列表 -
-
byte -这是用来表示字节值。例如2。
-
short -这是用来表示一个短整型。例如10。
-
int -这是用来表示整数。例如1234。
-
long -这是用来表示一个长整型。例如10000090。
-
float -这是用来表示32位浮点数。例如12.34。
-
double -这是用来表示64位浮点数,这些数字是有时可能需要的更长的十进制数表示。例如12.3456565。
-
char -这定义了单个字符文字。例如“A”。
-
Boolean -这表示一个布尔值,可以是true或false。
-
String -这些是以字符串的形式表示的文本。例如,“Hello World”的。
数字类
类型除了基本类型,还允许以下对象类型(有时称为包装器类型)-
- java.lang.Byte
- java.lang.Short
- java.lang.Integer
- java.lang.Long
- java.lang.Float
- java.lang.Double
此外,以下类可用于支持高精度计算 -
名称 | 描述 | 例如 |
---|---|---|
java.math.BigInteger | 不可变的任意精度的有符号整数数字 | 30克 |
java.math.BigDecimal | 不可变的任意精度的有符号十进制数 | 3.5克 |
算术运算符
Groovy语言支持正常的算术运算符任何语言。以下是在Groovy中可用的算术运算符 -
运算符 | 描述 | 例子 |
+ | 两个操作数的加法 | 1 + 2 将得到 3 |
- | 第一第二操作数相减 | 2 - 1 将得到 1 |
* | 两个操作数的乘法 | 2 * 2 将得到4 |
/ | 两个操作数的除法 | 3/2 将得到 1.5 |
% | 取模运算 | 3%2 将得到 1 |
++ | 自增运算,在自身值的基础上加1 |
INT X = 5; X ++; X 将得到 6 |
-- | 自减运算,在自身值的基础上减1 |
INT X = 5; X - -; X 将得到 4 |
关系运算符
关系运算符允许对象的比较。以下是在Groovy中可用的关系运算符 -
运算符 | 描述 | 例子 |
---|---|---|
== | 测试两个对象之间是否相等 | 2 == 2 将得到 true |
!= | 测试两个对象之间是否不等 | 3 != 2 将得到 true |
< | 检查是否左边的对象是小于右边的对象。 | 2 < 3 将得到 true |
<= | 检查是否向左对象是小于或等于右边的对象 | 2 <= 3 将得到 true |
> | 检查是否左边的对象比右边的对象大。 | 3 > 2 将得到 true |
>= | 检查是否向左对象大于或等于右边的对象。 | 3>= 2 将得到 true |
逻辑运算符
逻辑运算符用于计算布尔表达式。以下是在Groovy中提供的逻辑运算符 -
运算符 | 描述 | 例子 |
---|---|---|
&& | 这是逻辑“与”运算 | true && true 得到 true |
|| | 这是逻辑“或”运算 | true || true 得到 true |
! | 这是逻辑“非”运算 | !true 得到 false |
位运算符
Groovy中提供了四个位运算符。以下是在Groovy中可用的位运算符 -
运算符 | 描述 |
---|---|
& | 这是位“与”运算 |
| | 这是按位“或”运算 |
^ | 这是按位“异或”或异或运算符 |
〜 | 这是按位反运算符 |
这里是显示这些运算符的真值表。
p | q | p&Q | p | q | p ^ Q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
赋值运算符
Groovy语言也提供了赋值操作符。以下是在Groovy提供的赋值运算符 -
运算符 | 描述 | 例子 |
---|---|---|
+= | A += B 等价于 A = A+B |
DEF A = 5 A += 3 输出将是8 |
-= | A -= B 等价于 A = A-B |
DEF A = 5 A -= 3 输出将是2 |
*= | A *= B 等价于 A= A*B |
DEF A = 5 A *= 3 输出将是15 |
/= | A /= B 等价于 A = A/B |
DEF A = 6 A /= 3 输出将是2 |
(%)= | A (%)= B 等价于 A = A % B |
DEF A = 5 A %= 3 输出将是2 |
范围运算符
Groovy支持范围的概念,并在..符号的帮助下提供范围运算符的符号。下面给出了范围运算符的一个简单示例。
def range = 0..5
这只是定义了一个简单的整数范围,存储到一个局部变量称为范围内的下限为0和上限为5。
以下代码段显示了如何使用各种运算符。
class Example { static void main(String[] args) { def range = 5..10; println(range); println(range.get(2)); } }
当我们运行上面的程序,我们会得到以下结果 -
从println语句中,可以看到显示在range语句中定义的整个数字范围。
get语句用于从定义的范围中获取一个对象,它将索引值作为参数。
[5, 6, 7, 8, 9, 10] 7
运算符优先级
下表按优先级顺序列出了所有groovy运算符(仅列出部分运算符)
运算符 | 名称 |
---|---|
++ ,-- ,+ ,- |
预增/减(自增/减),一元加,一元减 |
* , / , % |
乘法,除法,取模 |
+ ,- |
加法,减法(二元) |
== ,!= , <=> |
等于,不等于,比较运算符 |
& |
二进制/位运算符与 |
^ |
二进制/位异或 |
| |
二进制/按位或 |
! | 逻辑非 |
&& |
逻辑与 |
|| |
逻辑或 |
= ,+= ,-= ,*= ,/= ,%= ,**= |
各种赋值运算符 |
Groovy 方法
Groovy 中的方法是使用返回类型或使用 def 关键字定义的。方法可以接收任意数量的参数。定义参数时,不必显式定义类型。可以添加修饰符,如 public,private 和 protected。默认情况下,如果未提供可见性修饰符,则该方法为 public。
最简单的方法是没有参数的方法,如下所示:
def methodName() { //Method code }
下面是一个简单方法的例子
class Example { static void sum(int a,int b) { int c = a+b; println(c); } static void main(String[] args) { sum(10,5); } }
Groovy 文件I/O
Groovy在使用I / O时提供了许多辅助方法,Groovy提供了更简单的类来为文件提供以下功能。
- 读取文件
- 写入文件
- 遍历文件树
- 读取和写入数据对象到文件
除此之外,您始终可以使用下面列出的用于文件I / O操作的标准Java类。
- java.io.File
- java.io.InputStream
- java.io.OutputStream
- java.io.Reader
- java.io.Writer
基本字符串操作
首先让我们学习groovy中的基本字符串操作。它们在下面给出。
序号 | 字符串操作和描述 |
---|---|
1 | Concatenation of two strings
字符串的串联可以通过简单的'+'运算符来完成。 |
2 | String Repetition
字符串的重复可以通过简单的'*'运算符完成。 |
3 | String Length
由字符串的length()方法确定的字符串的长度。 |
字符串方法
这里是String类支持的方法列表。
序号 | 方法和描述 |
---|---|
1 | center()
返回一个新的长度为numberOfChars的字符串,该字符串由左侧和右侧用空格字符填充的收件人组成。 |
2 | compareToIgnoreCase()
按字母顺序比较两个字符串,忽略大小写差异。 |
3 | concat()
将指定的String连接到此String的结尾。 |
4 | eachMatch()
处理每个正则表达式组(参见下一节)匹配的给定String的子字符串。 |
5 | endsWith()
测试此字符串是否以指定的后缀结尾。 |
6 | equalsIgnoreCase()
将此字符串与另一个字符串进行比较,忽略大小写注意事项。 |
7 | getAt()
它在索引位置返回字符串值 |
8 | indexOf()
返回此字符串中指定子字符串第一次出现的索引。 |
9 | matches()
它输出字符串是否匹配给定的正则表达式。 |
10 | minus()
删除字符串的值部分。 |
11 | next()
此方法由++运算符为String类调用。它增加给定字符串中的最后一个字符。 |
12 | padLeft()
填充字符串,并在左边附加空格。 |
13 | padRight()
填充字符串,并在右边附加空格。 |
14 | plus()
追加字符串 |
15 | previous()
此方法由CharSequence的 - 运算符调用。 |
16 | replaceAll()
通过对该文本的关闭结果替换捕获的组的所有出现。 |
17 | reverse()
创建一个与此String相反的新字符串。 |
18 | split()
将此String拆分为给定正则表达式的匹配项。 |
19 | subString()
返回一个新的String,它是此String的子字符串。 |
20 | toUpperCase()
将此字符串中的所有字符转换为大写。 |
21 | toLowerCase()
将此字符串中的所有字符转换为小写。 |
Groovy 范围
范围是指定值序列的速记。范围由序列中的第一个和最后一个值表示,Range可以是包含或排除。包含范围包括从第一个到最后一个的所有值,而独占范围包括除最后一个之外的所有值。这里有一些范例文字的例子 -
- 1..10 - 包含范围的示例
- 1 .. <10 - 独占范围的示例
- 'a'..'x' - 范围也可以由字符组成
- 10..1 - 范围也可以按降序排列
- 'x'..'a' - 范围也可以由字符组成并按降序排列。
以下是可用于范围的各种方法。
序号 | 方法和描述 |
---|---|
1 | contains()
检查范围是否包含特定值 |
2 | get()
返回此范围中指定位置处的元素。 |
3 | getFrom()
获得此范围的下限值。 |
4 | getTo()
获得此范围的上限值。 |
5 | isReverse()
这是一个反向的范围,反向迭代 |
6 | size()
返回此范围的元素数。 |
7 | subList()
返回此指定的fromIndex(包括)和toIndex(排除)之间的此范围部分的视图 |
Groovy 列表
列表是用于存储数据项集合的结构。在 Groovy 中,List 保存了一系列对象引用。
List 中的对象引用占据序列中的位置,并通过整数索引来区分。
列表文字表示为一系列用逗号分隔并用方括号括起来的对象。
groovy 列表使用索引操作符 [] 索引。列表索引从 0 开始,指第一个元素。
groovy 中的一个列表中的数据可以是任意类型。这 java 下集合列表有些不同,java 下的列表是同种类型的数据集合。
groovy 列表可以嵌套列表。如 [1,2,[3,4,5],“aaa”] groovy 列表内置有反转方法 reverse()。调用 List.reverse() 可以实现列表反转。groovy 列表内置有排序方法 sort()。调用 List.sort() 可以实现列表排序。空列表表示为 [] 声明一个空集合:
def list1 = []
def list2 = [1,2,3,4]
list2.add(12)
list2.add(12)
println list1.size()
列表间的几个常用方法:
1、添加:
def list1 = [100, 101]
def list2 = [ 99,98,1]
println list2.plus(list1) //输出结果: [100, 101, 99, 98,1]
// list2.plus(list1) 也可以写成 list2 + list1
2、删除:
def list1 = [12, 13]
def list2 = [11, 2, 33, 12, 13, 16]
println list2.minus(list1) //输出结果: [11, 2, 33, 16]
//list2.minus(list1) 也可以写成 list2 - list1
在本章中,我们将讨论 Groovy 中可用的列表方法。
序号 | 方法和描述 |
---|---|
1 | add()
将新值附加到此列表的末尾。 |
2 | contains()
如果此列表包含指定的值,则返回 true。 |
3 | get()
返回此列表中指定位置的元素。 |
4 | isEmpty()
如果此列表不包含元素,则返回 true |
5 | minus()
创建一个由原始元素组成的新列表,而不是集合中指定的元素。 |
6 | plus()
创建由原始元素和集合中指定的元素组成的新列表。 |
7 | pop()
从此列表中删除最后一个项目 |
8 | remove()
删除此列表中指定位置的元素。 |
9 | reverse()
创建与原始列表的元素相反的新列表 |
10 | size()
获取此列表中的元素数。 |
11 | sort()
返回原始列表的排序副本。 |
Groovy中的XML支持
Groovy语言还提供了对XML语言的丰富支持。使用的两个最基本的XML类是 -
-
XML标记构建器 - Groovy支持基于树的标记生成器BuilderSupport,它可以被子类化以生成各种树结构对象表示。通常,这些构建器用于表示XML标记,HTML标记。 Groovy的标记生成器捕获对伪方法的调用,并将它们转换为树结构的元素或节点。这些伪方法的参数被视为节点的属性。作为方法调用一部分的闭包被视为生成的树节点的嵌套子内容。
-
XML解析器 - Groovy XmlParser类使用一个简单的模型来将XML文档解析为Node实例的树。每个节点都有XML元素的名称,元素的属性和对任何子节点的引用。这个模型足够用于大多数简单的XML处理。
Groovy JMX
JMX是defacto标准,用于监控与Java虚拟环境有任何关系的所有应用程序。鉴于Groovy直接位于Java之上,Groovy可以利用已经为Java实现的大量工作。
监视JVM
可以使用java.lang.management中提供的标准类来执行JVM的监视。以下代码示例说明如何完成此操作。
Groovy JSON
JSON功能
功能 | 库 |
---|---|
JsonSlurper |
JsonSlurper是一个将JSON文本或阅读器内容解析为Groovy数据的类 结构,例如地图,列表和原始类型,如整数,双精度,布尔和字符串。 |
JsonOutput | 此方法负责将Groovy对象序列化为JSON字符串。 |
使用JsonSlurper解析数据
JsonSlurper是一个将JSON文本或阅读器内容解析为Groovy数据结构的类,如地图,列表和原始类型,如Integer,Double,Boolean和String。