1groovy学习笔记
groovy学习笔记groovy是一门类似于java的语言,在java语言的基础上,它吸收了很多脚本的特性,比如python,ruby。跟java一样,每个groovy文件也是编译成class文件,在JVM上运行。但是相比java,groovy的表达方式会更为简便。最近通过http://groovy.zeroleaf.com/core-syntax.html和http://docs.groovy-lang.org/next/html/documentation/来学习groovy。这2篇其实是差不多的,前一个是简单的中文版,是一些groovy的基础语法。后一个是英文原版。 环境配置下载groovy库下载安装 sdkman,执行下面命令,按照提示安装即可 $ curl -s http://get.sdkman.io | bash
使环境变量生效 $ source "$HOME/.sdkman/bin/sdkman-init.sh"
安装 Groovy $ sdk install groovy
此时可以查看groovy版本 192:~ fish$ groovy -v
Groovy Version: 2.4.7 JVM: 1.7.0_79 Vendor: Oracle Corporation OS: Mac OS X
OK,groovy安装成功 配置IntelliJIntelliJ安装的时候默认就会装上groovy插件,我们只要配置下project sdk和groovy library就好了 1、把groovy库从.sdkman复制出来,放到另一个目录。我是把groovy文件夹从/Users/fish/.sdkman/candidates/拷贝到/Users/fish/Documents/。 2、点击new project,在左边列表选择groovy,右边project sdk选择jdk 1.8,groovy Library点击Create,然后选择/Users/fish/Documents/groovy/2.4.7,结果如下所示 3、点击next 就可以了创建一个空的groovy工程了 printf "aaa"
点击右键run就可以看到控制台上输出了aaa。 标识符普通标识符标识符(identifiers)以字母,美元符号$ 或者下划线开始. 不能以数字开始,如下所示,注意定义一个变量要写def,不用写明变量类型,因为groovy是动态类型的语言。当然写明变量类型也可以,此时就不用写def了。 def name
def item3
def with_underscore
def $dollarStart
//定义了一个String
def sex="male"
//定义了一个Integer
def age=4
//定义了一个map
def map = [:]
引用标识符引用标识符(quoted identifiers)位于点表达式(dotted expression)的点号之后.
//定义一个map
def map = [:]
map."an identifier with a_3_2 space and double quotes" = "ALLOWED"
map.'with-dash-signs-and-single-quotes' = "ALLOWED"
map.'a'='b'
assert map.'a'=='b'
assert map.a=='b'
//语法错误
//assert map.an identifier with a_3_2 space and double quotes == "ALLOWED"
assert map."an identifier with a_3_2 space and double quotes" == "ALLOWED"
assert map.'with-dash-signs-and-single-quotes' == "ALLOWED"
groovy 字符串字符串形式首先来看下groovy字符串的表现形式,字符串表示的形式多种多样,如下所示 def map = [:]
map.'dollar slashy string'="dollar"
//如下类型字符串作为引用标识符都是对的
map.'single quote'
map."double quote"
map.'''triple single quote'''
map."""triple double quote"""
map./slashy string/
assert map.$/dollar slashy string/$=="dollar"
//稍微特殊的GString,也是对的
def firstname = "Homer"
map."Simson-${firstname}" = "Homer Simson"
assert map.'Simson-Homer' == "Homer Simson"
Groovy有java.lang.String和groovy.lang.GString两中字符串对象类型 def startingAndEndingWithANewline = '''
line one
line two
line three
'''
assert strippedFirstNewline.startsWith('n')
字符串插值字符串插值,可以用${}进行插值,如下所示 def name = 'Guillaume' // a_3_2 plain string
def greeting = "Hello ${name}"
//plain
def greeting2 = "Hello${'girl'}"
assert greeting.toString() == 'Hello Guillaume'
println(greeting)
println(greeting2)
GString toString当一个方法(不管是在 Java 还是在 Groovy 中实现)期望一个java.lang.String,但我们传入一个 groovy.lang.GString 实例时,GString 的 toString() 方法会自动,透明地被调用. String takeString(String message) {
assert message instanceof String
return message
}
def message = "The message is ${'hello'}"
assert message instanceof GString
def result = takeString(message)
assert result instanceof String
assert result == 'The message is hello'
GString 和 String 的哈希码尽管插值字符串可以用来代替普通 Java 字符串,但它们与普通字符串在某一方面还是有区别的: 即它们的哈希码(hashCodes)是不一样的. 普通 Java字符串是不可变的,然而 GString 的结果字符串 表示是可变的,取决于它的插入值. 即使结果字符串相同,GString 和 String 还是有不同的哈希码. //左边是插值字符串,右边是普通字符串,hashcode不一致
assert "one: ${1}".hashCode() != "one: 1".hashCode()
def key = "a"
def m = ["${key}": "letter ${key}"]
assert m["a"] == null
backslash你会发现结果字符串的第一个字符是一个换行符. 可以用反斜杠(backslash)转义换行符来移除该字符: def strippedFirstNewline = ''' line one line two line three '''
assert !strippedFirstNewline.startsWith('n')
unicodegroovy还可以支持unicode字符,如下所示 //欧元货币符号
def a='The Euro currency symbol: u20AC'
printf(a)
结果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |