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的环境设置

启动Groovy安装程序,然后请执行以下完成安装步骤。

第1步 -选择语言安装程序。

语言安装

第2步 -点击下一步按钮。

Groovy的2.4.5安装

第3步 -点击“我同意”按钮。

许可协议

第4步 -接受默认组件,然后单击下一步按钮。

选择组件

第5步 -选择适当的目标文件夹,然后单击下一步按钮。

安装位置

第6步 -点击安装按钮开始安装。

开始菜单文件夹

第7步 -一旦安装完成后,单击下一步按钮开始配置。

安装完成

第8步 -选择默认选项,并单击下一步按钮。

环境变量

第9步 -接受默认的文件关联,然后单击下一步按钮。

文件关联

第10步 -单击Finish按钮完成安装。

Finish按钮

一旦上述步骤之后,你就可以开始使用Groovy shell,有助于测试我们的Groovy,而不需要为Groovy提供一个完整的集成开发环境。可以通过在命令提示符下命令groovysh来完成。

运行命令Groovysh

 

如果你想包含groovy二进制文件作为maven或gradle构建的一部分,你可以添加以下行

 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中可用的位运算符 -

显示示例

运算符描述
这是位“与”运算
| 这是按位“或”运算
^ 这是按位“异或”或异或运算符
这是按位反运算符

这里是显示这些运算符的真值表。

pqp&Qp | qp ^ 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。

 

 

 

 

 

 

posted @ 2022-03-05 19:44  hanease  阅读(899)  评论(0编辑  收藏  举报