`
yixiandave
  • 浏览: 140585 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Groovy笔记(不定期更新)

阅读更多
就懒得分P了,直接放一篇文章里吧
接触Groovy大概一个月了,刚开始为它的简洁语法感到兴奋,不过随着深入使用,发现还是有一点问题的,一个是性能问题,一个是Debug单步执行的时候代码闭包产生的顺序混乱问题,还有语法检验变弱导致代码中容易埋下异常。

自己也是初学,错漏之处还请及时指出
另外iteye的code标签什么时候能支持Groovy呢

不过一切对于Groovy带来的新语法特性来说还是非常划算的

弱类型:
Groovy一个特点是弱类型的支持,def定义的元素可以是一个int,可以是一个String,可以是一个复杂对象,甚至可以是一个方法名,并且可以轻松的切换。强制类型转换除了java自身提供的
(String)strObj
这种形式以外,还提供了as语法:
strObj as String

这种方法给我的感觉就是少写几个括号吧

字符串:
GString是Groovy的一个非常大的亮点,极大简化了传统String的拼接、比较、转义、多行拼接操作
def str = 'abc'//java String
def str2 = "abc${str}"//GString,${str}就是对上面str的引用,可以简写为$str
def str3 = """hello
asdfasdf
sss"""//3个引号中间的就是换行字符串,类似于html中的pre标签,内部的换行、空格、缩进全部会原样保留
def isEqual = (str==str2)//字符串比较直接使用连等
str.matches(/\w+/)//两个/中间的可以作为正则表达式使用,在java中\w必须转义写为\\w


Array/Map/List
Groovy中的Array和List几乎可以通用,Map的使用也被极大简化
List<String> list = [];//List对象初始化可以用一对[]完成
list = [1,2,3,4];//数组可以直接转为List
println list[2] //List可以用数组下标的形式取值
Map<String,String> map = [:]//初始化一个Map可以用[:]的形式实现(中间是冒号),默认创建的是LinkedHashMap
map=['title':'hello','user':'user1']//Map可以以这种方式一次性赋值,在需要返回一个状态Map的时候非常有用
println map['title']//Map同样可以将key作为下标的形式取值


遍历
Groovy中可不止一个each可以遍历哦
先复习以下each表达式
//遍历一个list/array
jsonArray.each{ JSONObject item->//类型可以不写,加类型就会作强制转换,each后面不写则默认是it
 println item.toJSONString();
}
//遍历一个map
map.each{key,value->//两个参数分别对应key和value(可自定义名称和类型),只写一个参数就得到了Map.Entry对象
  newMap[key]=value;
}


但是在使用过程中发现each无法break和continue,在代码块内写的return更是一点用都没有,如果需要break和continue,我们可以使用find
def numbers = [1,2,3,4,5]
numbers.find{
  if(it==3){//不写->表达式则默认内部元素为it
    return true;//相当于break
  }
  return false;//相当于continue
}

这种形式的语法和jQuery的each函数非常像

如果我们要在遍历一个元素过程中需要删除本节点,Groovy也提供了一个removeAll节点
def numbers = [1,2,3,4,5,6,7,8]
numbers.removeAll{
  it%2==0//不写return直接返回最后一行执行结果,所以这里等效于return it%2==0
}
//it==[1,3,5,7]
//可以看出removeAll中return true则表示移除当前节点


闭包
闭包这部分研究不是很深入,写一个demo
def connectString = { a,b->
   '${a}with$b'
}
/*定义了一个connectString的闭包,可以当方法用,需要两个参数:a,b,可以定义类型,
返回类型无法定义,def connectString仅仅是定义了connectString的类型为def,而不是返回值
*/
分享到:
评论

相关推荐

    Groovy学习笔记 PDF版

    在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...

    Groovy 学习笔记

    2. **动态类型**: Groovy是动态类型的,这意味着在编译时不需要声明变量的类型,类型会在运行时自动推断。 3. **Groovy Shell和GroovyConsole**: 这两个工具是学习和测试Groovy代码的好帮手,可以快速尝试和验证代码...

    Groovy学习笔记.pdf

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...

    groovy学习笔记

    以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...

    Java整合Groovy脚本笔记

    Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    Java调用Groovy,实时动态加载数据库groovy脚本

    - **热部署**:当Groovy脚本更新时,无需重新编译或重启Java应用,只需更新数据库中的脚本,Java程序就能即时感知并执行新的逻辑。 - **灵活的业务逻辑**:业务规则可以根据需求快速调整,无需改变Java源码,降低...

    groovy

    Groovy是一种基于Java平台的、动态的、强大的编程语言,它设计的目标是增强开发者的生产力。Groovy结合了Java的静态类型系统和Python、Ruby等动态语言的灵活性,使得开发者可以更加高效地编写代码。本篇文章将深入...

    Groovy_笔记

    根据给定的文件信息,以下是对Groovy编程语言中几个关键知识点的深入解析: ### 多线程在Groovy中的运用 在Groovy中,线程的创建与启动非常直观,可以通过构造`Thread`对象并传入一个闭包(Closure)来实现。闭包...

    groovy-2.3.6-installer

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个JVM(Java Virtual Machine)语言。Groovy结合了Python、Ruby和Perl等脚本语言的简洁性和灵活性,并且完全兼容Java,可以无缝地与Java代码集成。在"groovy-...

    groovy入门经典,groovyeclipse 插件

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...

    Groovy插件

    Groovy是一种动态、灵活的编程语言,它与Java有着紧密的联系,可以在Java平台上无缝运行。Eclipse是一款广泛使用的开源集成开发环境(IDE),对于Java开发者来说尤其受欢迎。为了在Eclipse中使用Groovy进行开发,你...

    Groovy Script 入门

    ### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...

    groovy脚本实现对数据库的增删改查

    Groovy是一种基于Java平台的动态编程语言,它与Java语法高度兼容,但提供了更简洁、更易读的语法。在IT行业中,Groovy常被用于快速开发、脚本编写以及自动化任务,尤其在处理数据库操作时,其简洁的语法使得数据库的...

    groovy-all

    描述中的省略号可能是由于信息不完整,但在实际的Groovy-all-2.4.7.jar文件中,我们可以预期它将包含以下核心组件: 1. **Groovy Language Runtime**: 这是Groovy的核心,实现了Groovy语法解析、编译和执行。它允许...

Global site tag (gtag.js) - Google Analytics