1.Groovy 是没有类型的Java,所以定义变量的时候可以不指定类型,Groovy 会根据对象的值来判断其类型.
def str = "Hello world"
println str.class
2.通过Groovy进行循环
在Groovy中,for循环变得更简洁,更易阅读。首先,范围的定义方式更加简洁:0..4表明包含整数0,1,2,3,4; 0..<4 表示0,1,2,3; a..e 表示 a,b,c,d,e
for(i in 1..5){
println i
}
Groovy也支持默认参数值
def repeat(val, repeat=5){
for(i in 0..<repeat){
println val
}
}
repeat("Hello world",2)
repeat("foo",4)
3. 操作集合
在Groovy中,我们可以用范围来定义集合或者数组。
如:
def range = 0..4
println range.class
def coll = ["Groovy","Java","Ruby"]
println coll.class
为某个集合添加元素时,我们可以使用以下几种方法
coll.add("Python")
coll << "Smalltalk"
coll[5] = "Perl"
检索方式也更加灵活
println coll[1]
Groovy还允许在集合中增加或去掉集合
def numbers = [1,2,3,4]
def numbers2 = numbers +5 //=[1,2,3,4,5]
println numbers2
def numbers3 = numbers - [2,3]//=[1,4]
println numbers3
一些特殊调用
def numbers = [1,2,3,4]
println numbers.join(";") //= 1;2;3;4 ,将集合的元素拼接成了字符串
println [1,2,3,4,3].count(3) //=2 统计元素出现的次数
["Java","Groovy"]*.toUpperCase() // 全部转换成大写
请注意 *. 标记。对于以上列表中的每个值,都会调用 toUpperCase(),生成的集合中每个 String 实例都是大写的.
4.映射
定义Map
def hash = [name:"Andy", "VPN-#":45]
println hash.getClass() //=java.util.LinkedHashMap
name 看起来像一个变量,但是在幕后,Groovy 会将它变成 String。
操作键值对
hash.put("id",23)
hash.get("name")
hash.dob = "01/29/76"
println hash["name"] //="Andy"
请注意,在使用 [] 语法从映射获取项时,必须将项作为 String 引用。
5.闭包
使用闭包对集合进行迭代
def acoll = ["Groovy", "Java", "Ruby"]
acoll.each{
println it
}
请注意,each 直接在 acoll 实例内调用,而 acoll 实例的类型是 ArrayList。在 each 调用之后,引入了一种新的语法 — {,然后是一些代码,然后是 }。由 {} 包围起来的代码块就是闭包。
闭包中的 it 变量是一个关键字,指向被调用的外部集合的每个值 — 它是默认值,可以用传递给闭包的参数覆盖它。下面的代码执行同样的操作,但使用自己的项变量:
def acoll = ["Groovy", "Java", "Ruby"]
acoll.each{ value ->
println value
}
使用闭包迭代Map
def hash = [name:"Andy", "VPN-#":45]
hash.each{ key, value ->
println "${key} : ${value}"
}
闭包的其他用途:因为闭包是一个代码块,所以能够作为参数进行传递(Groovy 中的函数或方法不能这样做)。闭包在调用的时候才会执行这一事实(不是在定义的时候)使得它们在某些场合上特别有用。
def excite = { word ->
return "${word}!!"
}
可以通过两种方法调用闭包:直接调用或者通过 call() 方法调用
assert "Groovy!!" == excite("Groovy")
assert "Java!!" == excite.call("Java")
6.Groovy 中的类
Groovy类就是Java类,我们先定义一个bean.
class Song {
def name
def artist
def genre
static void main(args) {
def sng = new Song(name:"Le Freak",
artist:"Chic", genre:"Disco")
}
}
Groovy 自动提供一个构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应。这是 Groovy 的一项开箱即用的功能,除此之外,Groovy还生成了标准的 setter 和 getter 方法,所以可以像下面这样直接操纵类的属性,这些操作实际上都是通过setter,getter方法进行的,默认情况下,类的属性是私有的:
def sng3 = new Song()
sng3.name = "Funkytown"
sng3.artist = "Lipps Inc."
sng3.setGenre("Disco")
assert sng3.getArtist() == "Lipps Inc."
方法覆盖:
String toString(){
"${name}, ${artist}, ${genre}"
}
您可能已经想到:在 Groovy 中可以省略 return 语句。Groovy 默认返回方法的最后一行。所以在这个示例中,返回包含类属性的 String。
空指针安全性
Groovy 通过 ? 操作符提供了一个安全网 — 在方法调用前面添加一个 ? 就相当于在调用前面放了一个条件,可以防止在 null 对象上调用方法。
def d=null
println d?.toUpperCase()
d="Hello world"
println d?.toUpperCase()
分享到:
相关推荐
Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法简洁,减少了代码...
什么是 Groovy?...从学习的角度看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。(有时候会少很多!)
2. **DSL语法**:学习Gradle的Groovy Domain Specific Language(领域特定语言),用于编写构建脚本。 3. **依赖管理**:掌握如何声明和解决项目间的依赖,以及使用仓库(如Maven Central或JCenter)来获取依赖。 4....
Groovy是一种基于Java虚拟机(JVM)的编程语言,设计目标是简化Java的语法,使其更加简洁和灵活。Groovy结合了静态类型语言和动态类型语言的特点,它与Java语法相似,但去除了一些繁琐的元素,如强制类型声明和语句...
学习和精通Groovy能帮助Java开发者提高生产力,编写更加简洁、高效的代码,并能更好地利用Java生态系统中的资源。无论是在日常开发、自动化任务,还是在构建复杂系统时,Groovy都能提供强大的支持。通过阅读《Master...
### 精通Groovy中文教程 #### 一、Groovy简介 Groovy是一种动态语言,专门为Java平台设计,提供了一种更为简洁且灵活的语法结构。Groovy并不旨在取代Java,而是作为Java的一种补充,使得开发者能够在Java环境中...
本书是有关Groovy的第一本正式出版物,作者KennethBarclay和JohnSavage介绍了Groovy开发的所有主要领域,并解释了这种创新性的编程语言给Java平台赋予的动态特性。阅读本书只要求具备Java编程的一般性知识。不管你...
总的来说,这个最新的Groovy开发包是学习和精通Groovy的宝贵资源,无论是为了个人兴趣还是职业发展,都能从中受益匪浅。通过深入学习和实践,你将能够利用Groovy的灵活性和生产力优势,提升你的编程技能,并在Java...
### 精通Groovy:理解其核心概念与优势 #### Groovy简介 Groovy是一种运行于Java虚拟机(JVM)上的动态编程语言,旨在提供一种更为简洁且灵活的编程方式,同时也保持与Java生态系统的高度兼容性。Groovy的设计哲学之...
精通Groovy不仅仅是学习一门新的编程语言,更是掌握一种提升Java开发效率和代码质量的工具。通过深入了解Groovy的核心功能,实践其语法和特性,以及与Java的无缝集成,开发者可以显著提升自己的编程技能,同时在项目...
总的来说,《Groovy in Action》这本书是学习和精通Groovy语言的必备资料,涵盖了从基础到高级的所有主题,适合希望提升开发效率、探索动态语言特性的Java开发者,或是对脚本编程感兴趣的任何技术爱好者。...
《初学者指南:Groovy与Grails》一书通过一系列循序渐进的教程,帮助读者从Groovy的基础语法开始学习,逐步深入到Grails框架的高级应用。书中不仅讲解了Groovy和Grails的基本概念和原理,还提供了大量的实践案例和...
### IBM实战Groovy知识点概览 #### 一、Groovy简介 **Groovy**是一种运行在Java...对于想要探索Groovy魅力的开发者来说,无论是从入门到精通,还是将其应用于实际项目中,都将是一次充满挑战而又收获颇丰的学习之旅。
3. **GROOVY入门经典.pdf**:这本书可能会介绍Groovy的基本语法、面向对象特性、闭包以及如何利用Groovy增强Java应用。Groovy与Java的互操作性使得它在构建脚本和自动化任务时非常有用。 4. **AXIOM 数据模拟器 V...
本教程适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java™ 开发人员。了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。
通过深入学习《精通Grails》,你将能够掌握Grails的核心技术,构建高效、稳定的Web应用,享受Groovy和Grails带来的开发乐趣。无论是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的技能水平。
1. 学习Groovy语言基础,了解其语法特点和与Java的区别。 2. 安装Grails SDK,并熟悉其命令行工具。 3. 创建第一个Grails应用,了解MVC结构。 4. 学习GSP和模板引擎,掌握动态页面的生成。 5. 深入研究GORM,理解...
Java 6使得它们与Java的集成更加紧密,开发者可以利用Groovy的简洁语法和JRuby的Ruby特性来编写部分代码。 5. **动态类型与反射**:Java作为一个静态类型的编程语言,动态语言的灵活性常常体现在动态类型上。通过...
### Gradle 入门到精通知识点详解 #### 一、Gradle 概述与环境搭建 **1.1 Gradle 简介** Gradle 是一个基于 Java 的项目自动化构建工具,它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...
总的来说,Spock是一个强大而灵活的测试框架,通过其独特的Groovy语法和BDD思想,能够帮助开发者编写出更清晰、更易于维护的测试代码。无论是初学者还是经验丰富的测试工程师,都应该考虑将其纳入测试工具箱。通过...