学点Groovy之常用语法

本文地址:http://www.jianshu.com/p/b7dae9382886

Groovy支持几乎所有java语法,它从java提取而来,并对其进行一些语法的增加和改动。本文主要在官网指引文档基础上作一些总结和针对常用语法与java的差异性做一个归档。

一 基本语法
正如开头所说,大部分跟java没多大差别,有几个常用的地方可以注意下:

  1. 单引号和双引号都可以用来表示字符串,但是双引号的可以包含替换块,替换块用${}来标记。
  2. 可以[item1, item2, item3]直接表示列表;
  3. 可以[name1:value1, name2:value2]直接表示map。
  4. 所有原始类型的引用在编译时都是装箱后再使用。
  5. 对重载方法的选择在运行期才根据传值来决定,而java在编译期就会根据引用类型来确定调用哪个方法。

二 操作符
groovy支持所有java操作符
增加:
1 n次方操作符**
** 求n次方 如: 5 ** 2 结果为 25
**= 相当于求自身n次方 比如:
def a = 3
a **= 2 结果为9

2 连续操作符 *.
表示对集合对象中的每个元素做相同的操作。比如:
def makes = cars*.name
会对cars这个集合中每个元素的name属性合并为一个list赋给makes

3.范围操作符 ..
(0..5)表示 [0,1,2,3,4,5] 的整型数字,注意:跟java不同的是,这的括号包含上限元素5
(0..<5)表示不包括5
括号里面的元素可以是任何实现了comparable的类对象。

4.飞船操作符 <=>
长得像飞船就起个这样的名字。。。其实很简单,它就是compareTo方法的意思。
比如: 'a' <=> 'z' 结果是false

5.in操作符
表示contains或isCase

6.相等比较 ==
不同于java,groovy中==表示对象的比较,调用的是equals方法,要表示引用的比较的话,应该用is或者对象的is方法来表示

7.强转操作符 as
如果两个类型之间没有继承关系,直接用括号()强转是会抛类型转换异常的,但如果用as来替代就可以,比如 String a = (123 as String),但前提是来源对象的类型需要实现了asType方法,并且正确处理了传进来的目标类型。

三 真假
groovy的真假支持所有零值方式,并且支持matcher的结果,具体来说可分成以下几类(为false):

  1. java通常的true/false
  2. 对象为null
  3. 对象或集合内容为空,包括字符串"",零长度的集合或迭代器
  4. 其它零值,比如 数字 0
  5. matcher,groovy特有的正则表示法 =~ ,或者==~直接返回的比较结果。
  6. 重写类的asBoolean方法, 以本方法返回逻辑为准

四 结构

  1. 支持静态方法导入
    使用import static 可以导入静态方法

  2. 支持脚本
    可以直接写一段脚本或者定义一个脚本方法,代替定义类。
    脚本也可以写在类中,不过需要用特定的api来调用,并且脚本要在内嵌的run方法里写或者调用。

五 对象定义
跟java没有太多不同,常用的定义形式需要注意以下几点:

  1. 可以明确指定变量的类型,也可以不明确类型,不明确指定时,用def修饰。
  2. 方法无返回值时用def关键字修饰方法, 有返回时用返回类型代替这个关键字。
  3. 方法需要返回时,若没有return关键字,则最后一行的对象会被返回。
  4. 方法参数支持默认值。

六 闭包
闭包(Closures)可以理解成匿名的方法。长得有点像方法块,但是可以返回。基本结构是:
一对大括号,可选的参数和一个箭头,若干个语句。
{ [closureParameters -> ] statements }
参数的传递和用法类似于lambda表达式,不过花括号的位置和参数没有的时候箭头可否存在这些细节有点点不一样。

官网介绍:
http://www.groovy-lang.org/documentation.html

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,236评论 19赞 139
  • 什么是 Groovy? 简言之,Groovy是一种基于JVM(Java虚拟机)的敏捷动态开发语言。它是一种成熟的面...
    北纬26阅读 4,308评论 0赞 14
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,963评论 9赞 118
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,302评论 18赞 399
  • 2016年9月15日,周四,下雨,happy mid-autumon day. 清早起床,朋友圈一片节日祝福气氛,...
    后蒋女士阅读 292评论 0赞 1

友情链接更多精彩内容