Groovy 初学者脚本教程
什么是 Groovy 脚本?
阿帕奇 Groovy 是一个面向对象和 Java 为语法兼容的编程语言构建 Java 平台。这种动态语言具有许多类似于 Python、Ruby、Smalltalk 和 Pero。 Groovy 源代码被编译成 Java 字节码,因此它可以在任何安装了 JRE 的平台上运行。 Groovy 还在幕后执行许多任务,使其更加敏捷和动态。
Groovy 语言可以用作 Java 平台。它几乎就像一个超级版本的 Java 提供 Java的企业功能。它还提供许多生产力功能,如 DSL 支持、闭包和动态类型。与其他一些语言不同,它被设计为一种伴侣,而不是替代品 Java.
为什么 Groovy?
以下是您应该使用和学习的主要原因 Groovy-
- Groovy 是一种敏捷而动态的语言
- 与所有现有 Java 对象和库
- 感觉轻松自然 Java 开发
- 相比之下,代码更简洁、更有意义 Java
- 你可以随意使用它 Java 应用
Groovy 发展历程
- 2003 年:由 Bob Mc 开发Whir特和詹姆斯·斯特拉坎
- 2004 年:纳入 JSR 241 但被废弃
- 2005 年:Jeremy Rayner 和 Guillaume Laforge 重新推出
- 2007年: Groovy 1.0版
- 2012年: Groovy 2版
- 2014年: Groovy 版本 2.3(JDK 8 的官方支持)
- 2015年: Groovy 成为 Apache 软件基金会的一个项目 Foundation
特点 Groovy
- 列表、映射、范围、正则表达式文字
- 多方法和元编程
- Groovy 类和脚本通常存储在 .groovy 文件中
- 脚本包含 Groovy 没有任何类声明的语句。
- 脚本还可以包含类定义之外的方法定义。
- 它可以编译并与传统 Java 应用程序。
- 地图、列表、正则表达式的语言级别支持
- 支持闭包、动态类型、元对象协议
- 支持静态和动态类型以及运算符重载
- 列表(数组)、映射、范围和正则表达式的文字声明
如何安装 Groovy
步骤1) 确保你有 Java 安装.
步骤2) 在MyCAD中点击 软件更新 http://groovy-lang.org/download.html 并点击安装程序。
注意:您还可以安装 Groovy 使用 Zip 文件或作为 Eclipse IDE。在这 Groovy 教程,我们将坚持 Windows 安装
步骤3) 启动下载的安装程序。选择语言并单击“确定”
步骤4) 启动。在欢迎屏幕中,单击下一步
步骤5) 同意许可条款
步骤6) 选择要安装的组件,然后单击“NEXT”
步骤7) 选择安装目录并单击NEXT
步骤8) 选择“开始菜单文件夹”,然后单击“下一步”
步骤9) 安装完成后,保留路径默认,然后单击下一步
步骤10) 点击下一步
步骤11) 在开始菜单中搜索 Groovy 安慰
Groovy 你好世界的例子
假设我们想在 Java. 实现字符串的代码 Groovy 你好世界将是
public class Demo { public static void main(String[] args) { System.out.println("Hello World"); } }
上述代码在两种情况下均有效 Java 和 Groovy as Groovy 是一个超集 Java. 但优势在于 Groovy 我们可以省去类创建、公共方法创建等操作,只用一行代码就能实现相同的输出,如下所示:
println "Hello World."
不需要分号
无需括号
System.out.println 简化为 println
Groovy 变量
In Java,静态绑定是强制性的。这意味着必须提前声明变量的类型。
public class Demo { public static void main(String[] args) { int x = 104; System.out.println(x); //x = "Guru99"; } }
在上面的例子中 Groovy 教程中,变量类型(整数)是使用关键字“int”预先声明的。如果要声明浮点数,请使用关键字 float。
如果你尝试将一个字符串值赋给一个 int(取消注释第 5 行),你将得到以下错误
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
相反, Groovy 支持动态类型。使用关键字“def”定义变量,无需事先声明变量类型。编译器在运行时确定变量类型,您甚至可以指定变量类型。
考虑以下 Groovy 示例,
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
输出:
class java.lang.Integer class java.lang.String
In Groovy,您可以创建多行字符串。只需确保将字符串括在三重引号中即可。
def x = """Groovy at Guru99""" println x
输出:
Groovy at Guru99
备注:你仍然可以使用 byte、short、int、long 等变量类型 Groovy。但是您不能动态地更改变量类型,因为您已经明确声明了它。
考虑以下代码:
int x = 104 println x x = "Guru99"
它给出了以下错误
104 Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int' org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int' at jdoodle.run(jdoodle.groovy:3) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) Command exited with non-zero status 1
Groovy-Opera职权范围
运算符是告诉编译器执行某些数学或逻辑运算的符号。
Groovy 有以下五种类型的运算符 –
- 算术运算符:加(+)、减(-)、乘(*)、除(/)
- 关系运算符:等于(==)、不等于(!=)、 Less 比 (<) Less 大于或等于 (<=)、大于 (>)、大于或等于 (>=)
- 逻辑运算符:与(&&)、或(||)、非(!)
- 按位运算符:与 (&)、或 (|)、(^)、异或或排他或运算符
- 赋值运算符:否定运算符(~)
Groovy-循环
In Java,你可以定义一个循环如下
public class Demo { public static void main(String[] args) { for (int x = 0; x <= 5; x++) { System.out.println(x); } } }
输出:
0 1 2 3 4
您可以在以下位置实现相同的输出 Groovy 使用 upto 关键字
0.upto(4) {println "$it"}
您将获得与上面相同的输出。$it 是一个闭包,它给出当前循环的值。
考虑以下代码
2.upto(4) {println "$it"}
它给出一个输出
2 3 4
你也可以使用“times”关键字来获得相同的输出
5.times{println "$it"}
假设你想打印 0,2,4 for 循环 Java
public class Demo { public static void main(String[] args) { for (int x = 0; x <= 5; x=x+2) { System.out.println(x); } } }
输出:
0 2 4
您可以使用步骤方法
0.step(7,2){println "$it"}
Groovy- 做决定
声明 | 欺骗 |
---|---|
if 语句 | 如在 Java,如果条件为真,则执行 if 语句。 |
if/else 语句 | 在 if/else 语句中,首先在 if 语句中评估一个条件。如果条件为真,则执行其后的语句。它在 else 条件之前停止并退出循环。但是,如果条件为假,则执行 else 语句块中的语句。然后退出循环。 |
嵌套 If 语句 | 当需要有多个 if 语句时使用它。 |
Switch 语句 | 当有多个条件时,嵌套的 if-else 语句可能变得难以阅读。为了使代码更具可读性,可以使用 switch 语句。 |
嵌套 Switch 语句 | In Groovy 也可以使用嵌套的 switch 语句。 |
Groovy 列表
列表结构允许您存储数据项的集合。在 Groovy 编程语言中,List 保存了一系列对象引用。它还显示了序列中的位置。List 字面量表示为一系列用逗号分隔并括在方括号中的对象。
Grovy 列表的示例:
字符串列表 - ['Angular', 'Nodejs,]
对象引用列表 – ['Groovy',2,4 2.6]
整数值列表 - [16, 17, 18, 19]
空列表- [ ]
以下是可用的列表方法 Groovy:
方法 | 描述 |
---|---|
加() | 允许您将新值附加到此列表的末尾。 |
包含() | 如果此列表包含某个值,则返回 true。 |
得到() | 返回确定位置的元素 |
是空的() | 如果 List 不包含任何元素,则返回真值 |
减() | 此命令允许您创建一个由原始元素(不包括集合中指定的元素)组成的新列表。 |
加() | 允许您创建一个由原始元素以及集合中提到的元素组成的新列表。 |
流行音乐() | 删除列表中的最后一项 |
去掉() | 移除特定位置的元素 |
撤销() | 创建一个新的列表,将原始列表的元素反转 |
尺寸() | 返回此列表中元素的数量 |
种类() | 返回已排序的副本 |
考虑以下 Groovy 脚本示例
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
输出:
[Guru99, is, Best, for, Groovy] true Best Learning
Groovy 地图
一张地图 Groovy 是键值对的集合
示例 Groovy 地图:
- [教程: 'Java, 教程: 'Groovy] – 以 Tutorial 为键,以 Tutorial 为值,键值对的集合
- [ : ] 代表一个空的 map
以下是可用的地图方法列表 Groovy.
方法 | 描述 |
---|---|
包含键() | 检查地图是否包含这个键? |
得到() | 此命令在此 Map 中查找键并返回相应的值。如果在此 Map 中找不到任何条目,则它将返回 null。 |
键集() | 允许在此 Map 中查找一组键 |
放() | 将指定的值与此 Map 中的给定键关联。如果 Map 之前包含此键的映射。那么旧值将被指定值替换。 |
尺寸() | 返回键值映射的数量。 |
values() | 此命令返回值的集合视图。 |
Groovy 计费示例:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
输出
Jen
Groovy- 闭包
Groovy 闭包是一段被包装为对象的代码。它充当方法或函数。
简单闭包示例
def myClosure = { println "My First Closure" } myClosure()
输出:
My First Closure
闭包可以接受参数。标识列表以逗号分隔
箭头(->)标记参数列表的结束。
def myClosure = { a,b,c-> y = a+b+c println y } myClosure(1,2,3)
输出:
6
闭包可以返回一个值。
def myClosure = { a,b,c-> return (a+b+c) } println(myClosure(1,2,3))
输出:
6
有很多内置的闭包,比如“It”,“identity”等等,闭包可以将其他闭包作为参数。
Groovy VS。 Java
Groovy | Java |
---|---|
In Groovy,默认访问说明符是 public。这意味着未指定任何访问修饰符的方法是公共的,并且可以在类和包边界之外访问。 | In Java,默认访问修饰符是包,即,如果你没有为字段、方法或类指定访问修饰符,它将变为包私有的, |
为类成员自动生成 getter 和 setter。 | Java,您需要为字段定义 getters 和 setters 方法 |
Groovy 允许使用带有字符串的双引号进行变量替换。 | Java 不支持变量替换。 |
输入信息是可选的。 | 必须输入以下信息 Java. |
Groovy 它不需要以分号结尾。 | In Java,每个语句都以分号结尾。 |
Groovy 为每个程序自动生成一个名为 Script 的包装类 | In Java,您需要 main 方法来使类可执行。 |
关于 Groovy
误解 | 现实 |
---|---|
我们可以使用 Groovy 仅用于编写脚本。 | 它可用于编写脚本。但是,除此之外,您还可以执行许多其他任务。 |
Groovy 都是关于闭包的。“这只是 函数式编程语言设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“ | Groovy 采用 Lisp 或 Closure 等函数式编程语言。 |
Groovy 如果你想做 TDD 是一个理想的选择 | 这种说法是正确的。然而,这肯定不是使用 Groovy. |
您可以使用 Groovy 仅当您想使用 Grails 时。 | Grails 是一个强大的 Web 开发框架。
但是, Groovy 提供的远不止这些。 |
使用的缺点 Groovy
- JVM 和 Groovy 脚本启动时间很慢,限制了操作系统级脚本
- Groovy 在其他社区尚未完全被接受。
- 使用不方便 Groovy 无需使用 IDE
- Groovy 可能会更慢,从而增加开发时间
- Groovy 可能需要大量内存
- 知识 Java 势在必行。
Groovy 工具
我们将在本文中讨论 3 个重要工具 Groovy 脚本教程
1. groovysh:以交互方式执行代码。
2. groovyConsole:用于交互式代码执行的 GUI
3. groovy:执行 Groovy 脚本。你可以像这样使用它 Perl的, Python等等。
Groovysh
- 命令行外壳
- 帮助你执行 Groovy 交互式编码
- 允许输入语句或整个脚本
Groovy 领事
- Swing 界面充当最小 Groovy 开发编辑器。
- 允许你互动 Groovy 码
- 帮助您加载和运行 Groovy 脚本文件
Groovy
处理器执行 Groovy 程序和脚本。U
它可以用来测试简单的 Groovy 表达式。
结语
- Groovy 是一种面向对象的编程语言,用于 Java 平台
- Groovy 脚本提供与所有现有系统的无缝集成 Java 对象和库
- 鲍勃·麦克Whirter 和 James Strachan 于 2003 年开发了 Groovy
- 列表、映射、范围、正则表达式文字是 Groovy
- 支持四种类型的运营商 Groovy 是 1. 关系 2. 逻辑 3. 按位 4. 赋值
- Groovy 使用 if、if/else、嵌套 if、switch、Netsted switch 语句进行决策
- 列表结构允许您存储数据项的集合
- 一张地图 Groovy 是键值对的集合
- In Groovy, 自动为类成员生成 getter 和 setter
- In Java,你可以使用为字段提供的 getters 和 setters 方法
- 关于 Groovy 它只能用于脚本,这是不正确的
- 一段时间 Groovy 可能会更慢,从而增加开发时间
- 三种 Groovy 工具包括:执行代码的 groovysh、用于交互式代码执行的 GUI groovy Console 和执行脚本的 groovy