1、注释
单行,多行,groovydoc 注释,与 java 基本一致
2、shebang line
#! /usr/bin/env groovy
println "Hello from the shebang line"
groovy 可以作为脚本语言使用,这跟 java 有很大的不同,首先 groovy 代码文件的名称不一定要与文件中的类同名,且文件中的语句也不一定要全部放在类中,它是一种脚本语言,当执行该 groovy 脚本时,会顺序执行脚本中的语句。
而 shebang
就是告诉 linux/unix 系统,该脚本应该用哪一种解释器去解析,python,perl,ruby,这些都是脚本语言,它们的源码文件中也会用到 shebang
符号。
3、关键字
as,assert,break,case,catch,class,const,continue,def,default,do,else,enum,extends,false,finally,for,goto,if,implements,import,in,instanceof,interface,new,null,package,return,super,switch,this,throw,throws,trait,true,try,
while,
关键字是理解一门编程语言的入口,groovy 是为 java 程序开发人员设计的脚本语言,因此它最大程度的延用 java 的语法特征,并适当的引入新的概念。
从关键字上可以看出,绝大多数 java 中都有。
as,def,goto,in, instanceof,trait
这几个关键字要格外关注。
4、标识符
groovy 标识符以字母,$ 符,下划线开头,不能以数字开头。
合法的标识符:
def name
def item3
def with_underscore
def $dollarStart
非法的标识符:
def 3tier
def a+b
def a#b
标识符加 dot 后面可以跟关键字:
foo.as
foo.assert
foo.break
foo.case
foo.catch
5、带引号的标识符
def map = [:]
map."an identifier with a space and double quotes" = "ALLOWED"
map.'with-dash-signs-and-single-quotes' = "ALLOWED"
assert map."an identifier with a space and double quotes" == "ALLOWED"
assert map.'with-dash-signs-and-single-quotes' == "ALLOWED"
6、字符串
在 groovy 中,字符串既可以是 java.lang.String 类型,也可以是 groovy.lang.GString 类型,GString 字符串属于 插值字符串
,用起来更加的灵活。
格式 | 语法 | 插值 | 多行 | 转义符 |
---|---|---|---|---|
Single-quoted | ‘…’ | \ | ||
Triple-single-quoted | ‘’’…’’’ | Yes | \ | |
Double-quoted | “…” | Yes | \ | |
Triple-double-quoted | “”"…""" | Yes | Yes | \ |
Slashy | /…/ | Yes | Yes | \ |
Dollar slashy | / … / /…/ /…/ | Yes | Yes | $ |
7、Lists
groovy list 对应与 java.util.List,默认情况下,实现类为 java.util.ArrayList,也可以指定其他类型的 List 实现类。
def numbers = [1, 2, 3]
assert numbers instanceof List
assert numbers.size() == 3
def linkList = [1,2,3] as LinkedList
LinkedList otherLinked = [3, 4, 5]
List 中元素的类型可以不同, 例如 [1, "a", true]
groovy arrays 与 lists 在字面形式上是一样的, 但 array 需要显示的指定元素类型。
String[] arrStr = ['Ananas', 'Banana', 'Kiwi']
def numArr = [1, 2, 3] as int[]
8、Maps
map,有时也成为字典,关联数组,在 groovy 中表示为:
def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']
在 groovy 中 {}
用来表示代码块,闭包,所以 map 的定义使用 []
, 这跟 js,python 等脚本语言不同。