概述
- 一种基于JVM的敏捷开发语言
- 结合了Python、Ruby、Smalltalk的许多强大的特性
- groovy可以与java完美结合,而且可以使用java所有的库
- 语法上支持动态类型、闭包等新一代语言特性
- 即可以面向对象编程、又可以面向过程编程(脚本)
数据类型
- 可以使用java中的基本类型和对象类型,其中基本类型会被自动装包为对象类型(int -> Integer)
- 也可以使用动态类型
def
关键字声明
def a = 1
println a.class
def b = 1.3
println b.class
def c = "hello"
println c.class
//输出
class java.lang.Integer
class java.math.BigDecimal(大数据类型)
class java.lang.String
强类型和动态类型选择:如果该变量只是自己用,则推荐使用动态类型,如果该类型需要外部模块调用、传递,则推荐使用强类型。
字符串类型
Groovy中可以使用String类型,同时增加了GString类型,GString相对于String增加了许多API和操作符,并且两种类型可以相互传递相互调用。
定义
- 使用单引号定义
//本质类型就是 java.lang.String,相加后得到的仍然是java.lang.String类型
def name = 'Hello Groovy!'
- 使用三个单引号定义
//可以在里面换行,而单引号换行需要用+进行拼接;可以在里面使用单引号和双引号,而单引号中需要转义
def name = '''Hello Groovy!'''
- 使用双引号定义
//使用双引号被称为可扩展字符串,扩展之前的真实类型是String,扩展后的真实的类型是GString,相加后得到的仍然是java.lang.String类型
def a = "Groovy"
def b = "Hello ${a}"
println a.class
println b
println b.class
//输出
class java.lang.String
Hello Groovy
class org.codehaus.groovy.runtime.GStringImpl
方法
Groovy中String的方法来源共三个地方,分别是java.lang.String、DefaultGroovyMethods、StringGroovyMethods三个地方,其中StringGroovyMethods中又可以分为基本参数类型和闭包类型两种。
- center:扩充字符串的长度,并进行填充,center是从两侧填充,padLeft、padRight分别是从左右填充
def a = 'Hello'
a = a.center(10,'World')
println a
//输出
WoHelloWor
- 获取指定位置上的字符
def a = 'Hello'
println a[1]
println a[1..2]
//输出
e
el
- minus:滤除指定字符串(减法运算)
def a = 'Hello'
def b = 'llo'
println a-b
//或者
println a.minus(b)
//输出
He
- reverse:字符串反转
def a = 'Hello'
println a.reverse()
//输出
olleH
- capitalize:首字母大写
def a = 'hello'
println a.capitalize()
//输出
Hello
- isNumber:判断字符串是否是数组类型
def a = '12345'
println a.isNumber()
//输出
true
逻辑控制
- switch-case:相对于java语言可以传入更多的数据类型
def a = [1,2,3]
switch (a){
case Integer: //类型
println "Integer"
break
case [1,2,3,'a']: //数组
println "Array"
break
case 1..4: //范围
println "Range"
break
}
- for
//相对于java增加了对范围的循环
def a = 0
for(i in 1..9){
a++
}
//对List进行循环
def a = 0
for(i in [1,2,3,4,5,6,7]){
a++
}
//对Map进行循环
def key = 1
def value = ""
for(i in [1:"a",2:"b",3:"c"]){
key+=i.key
value+=i.value
}
网友评论