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来完成。

如果你想包含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中可用的位运算符 -

显示示例

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

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

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。

w3cschool-Groovy 教程的更多相关文章

  1. JavaScript 实例 | w3cschool菜鸟教程

    JavaScript 实例 | w3cschool菜鸟教程 http://www.w3cschool.cc/js/js-examples.html

  2. w3cschool菜鸟教程离线版chm手册正式发布

    w3cschool菜鸟教程是一个提供了最全的的web技术基础教程网站.网站包含了HTML教程.CSS教程.Javascript教程.PHP教程等各种建站基础教程.同时也提供了大量的在线实例,通过实例, ...

  3. w3cschool在线教程

    做网页开发的,没有不知道w3cschool的,如果你还不知道,那么就应该早点看下面推荐的文章,菜鸟可以帮你提升你的技能,老鸟可以温故而知新. 第一个是:http://www.w3school.com. ...

  4. W3Cschool菜鸟教程离线版下载链接

    请在电脑上打开以下链接进行下载w3cschool 离线版(chm):http://pan.baidu.com/s/1bniwRCV(最新,2014年10月21日更新)w3cschool 离线版(htm ...

  5. HTML5 Canvas | w3cschool菜鸟教程

    HTML5 Canvas <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形.. 在画布上(Canvas)画一个红色矩形,梯度矩形,彩色矩形,和一些彩色的文字. ...

  6. [置顶] IOS 基础入门教程

    IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...

  7. UML 教程

    UML 教程 关键词:部署图, 组件图, 包图, 类图, 复合结构图, 对象图, 活动图, 状态机图, 用例图, 通信图, 交互概述图, 时序图, 时间图 简介 部署图 组件图 包图 类图 复合结构图 ...

  8. 【微信小程序】:客服消息教程

    1.本教程完全链接W3Cschool的教程,已经讲的非常清晰和透彻. 2.链接:https://www.w3cschool.cn/weixinapp/weixinapp-api-custommsg-c ...

  9. 在w3cschool学完html,css,javascript,jquery以后,还是不会做前端怎么办?

    w3cschool是一个非盈利性的在线技术学习网站,提供按W3C标准编写的基础教程.完整的看完w3cschool上面的手册,可以基本掌握编程语法.基础性的东西通常都会比较零散,因此,在学习一段时间后, ...

  10. Git 相关工具及教程地址

    一.Git GUI 客户端 Git 客户端下载(Windows) TortoiseGit 客户端下载(Windows) Sourcetree 客户端下载(Windows.Mac) Git Extens ...

随机推荐

  1. Typora实现双击图片放大 Mac

    前置条件 Typora LightBox: github下载 添加LightBox拓展 打开应用程序,找到typora,右键选择"显示包内容". 解压lightbox2代码,将di ...

  2. php yield使用

    在循环一个大数组的时候yield非常好用能节省内存. 比如有个大文件需要读取并处理,如果全部读出来太耗费内存,就可以这样做 <?php function getRows($file) { $ha ...

  3. 高性能计算-gemm-mpi并行计算优化(8)

    1. 目标: 矩阵A(MK) 矩阵B(KN)相乘,计算结果 C(M*N);本测试将使用不同的数据分块方式.MPI通信接口.数据循环模型,测试通信及计算效率,计算耗时为程序用户态和核心态的占用cpu时间 ...

  4. Auto-Encoding Variational Bayes (VAE原文)、变分推理

    变分自动编码器的大致概念已经理解了快一年多了,但是其中的数学原理还是没有搞懂,在看到相关的变体时,总会被数学公式卡住.下决心搞懂后,在此记录下我的理解. 公式推导--变分下界 这篇文章提出一种拟合数据 ...

  5. (Python基础教程之二)在Sublime Editor中配置Python环境

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  6. c# is 和 as 浅看重制版

    前言 当年写的比较差:https://www.cnblogs.com/aoximin/p/12965408.html,所以特来重新写一遍. 正文 首先为什么会出现is 和 as 呢? 因为是为了有需要 ...

  7. juc 学习

    CyclicBarrier 应用场景是比如在做压力测试时,使用多少个用户并发,做集合点测试. 比如设置 100个用户并发,100个用户同时进行压测,只有100个用户压测完毕时,才能再发起下一波的压力测 ...

  8. mindoc 迁移

    1.备份数据库 mysqldump --databases mindoc_db > mindoc_db.sqlmysqldump -u USER_NAME -p PASSWORD [其他选项] ...

  9. sql注入-数据库表基本操作

    一.数据库 linux下登录: mysql -u root -p 查看数据库: show databases; 可以在phpmyadmin面板点击SQL进行操作 1. 增加/创建 创建xxx数据库,并 ...

  10. CSS 变量与运算

    1.变量 变量声明:变量名使用 "--" 为前缀,且区分大小写 /* 全局变量 */ :root{ --bgColor: red; } /* 布局变量 */ p{ --bgColo ...