1、介绍
Groovy自2003年起出现在Java领域。凭借十多年的历史、发展和经验,它是一种Java语法兼容的面向对象编程语言,可编译为JVM字节码。在某种程度上,Groovy可以被视为Java的一种脚本化改良版。这是因为它运行在虽然运行在JVM上,由于它的工作方式,它可以很好地与Java代码及其相关库进行互操作。大多数有效的Java代码也可以转换为有效的Groovy代码。
Groovy被设计为既是编程语言又是脚本语言。这意味着与需要编译的Java不同,Groovy可以结合各类语法糖的使用,减少了编码过程中大量工作。
Groovy和Java代码的最大区别在于Groovy更灵活,语法要求更少,因此吸引了许多Java使用者。这意味着许多进入Groovy的Java开发人员会发现学习它的过程非常简单。因为从根本上说,大多数基于面向对象的编程语言都倾向于遵循相同的语法。这种共享的意识形态使开发人员可以轻松地在Java和Groovy之间切换,或者可以混用Java和Groovy。
2、groovy注释
groovy的注释有两种(与Java相同)
// 单行注释
/**/ 多行注释
3、groovy语句输出
方式一(java版本)
class HelloGroovy {
static void main(args) {
System.out.println("Hello world")
}
方式二(groovy)
println "hello world"
注意:groovy语法中不需要使用分号进行结尾
4、定义变量
方式一
像Java一样使用数据类型直接声明
int x = 10
String s = "张三"
方式二
使用def关键字声明变量,groovy会更加你传入的数据,自动推断变量类型
def x = 3
def name = "张三"
5、单引号、双引号与三引号的区别
5.1、单引号
常用来定义字符串,与java中的双引号一样 “\”为转义字符
def name = '测\'试代码'
5.2、双引号
功能与单引号相同,除此之外它还可以借助${变量名}进行动态的设置字符串参数
def testName = "call me"
def text = "Hello : ${testName}"
println testName.class // class java.lang.String
println text.class // class org.codehaus.groovy.runtime.GStringImpl
注意:第一行代码的数据类型为Java中的String数据类型,但是第二代码中的数据类型则是groovy中特有的GString数据类型,GString 与 java中的String可以相互传递,相互转换的。
${}表达式可扩展任意表达式
5.3、三引号
基本功能与单引号相同,除此之外,如果我们想定义多行的字符串时,想要保留它的格式时,我们就可以使用三引号来完成
def mail = '''\
abc
efg
'''
println(mail)
注:groovy使用打印方法,可以使用括号将对象进行包裹,也可以不使用小括号,使用空格分隔对象,也能实现打印方法,二者功能完全相同。
6、字符串的常用处理方法
6.1、center(中心填充)
这是字符串的填充方法,参数1是将字符串填充为多少个,参数2是填充时,填充所用的对象。它有两个构造方法,一个参数构造方法,指定将字符串添加成多少个,使用空格进行填充(指定的个数小于字符串的长度时不会进行填充)
def str = "groovy hello"
println str.center(15, "p")
6.2、padLeft(左填充)
def str = "groovy"
println str.padLeft(8,"0")
6.3、padRight(右填充)
def str = "groovy"
println str.padRight(8,"0")
6.4、字符串的比较
def str2 = "hello"
println str > str2 // 比较的是Unicode编码,还可以使用compareTo方法进行字符串的比较
6.5、获取字符串的值
def str = "groovy hello"
str[0] // 根据索引获取字符串的值,
str.getAt(4) // java方式
str[1..4] // 传入范围,来获取字符串
6.6、字符串相减(minus方法)
字符串的减法,减去的是str中包含str的元素,此方法还可以用运算符 " - " 代替
str = "ABC999"
STR2 = "aBC999"
str.minus(str2) // 结果为aBC
6.7、将字符串倒序输出(reverse方法)
str.reverse() // 将字符串倒序输出
6.7、将字符串首字母大写(capitalize方法)
str.capitalize() // 将字符串首字母大写
6.8、判断字符串是否是数字类型(isNumber方法)
str.isNumber() // 判断字符串是否是数字类型
6.8、将字符串转换为其他类型(类似于java中各种数据类型的相互转换)
str3 = "8"
println str3.toInteger() // 将字符串转换为其他类型
注:Groovy还有许多的字符串操作方法,这里只是列举了少部分常用的,具体的详见GroovyAPI文档
7、条件语句与循环语句
Groovy中 if条件语句、for和while循环语句与Java相同,这里主要介绍switch..case和for循环语句的增强型用法,以及Groovy对其的改造。
7.1、switch..case
groovy中的Switch..case 可以是任意的数据类型(比Java中的switch..case强大得多)
def x = 1.2345
def result
switch (x) { // groovy中的Switch..case 可以是任意的数据类型
case 'foo':
result = 'find foo'
break
case 'bar':
result = 'find bar'
break
case [4, 5, 6, 'inlist']: // 列表
result = 'list'
break
case 1..44:
result = 'range' // 范围
break
case Integer:
result = 'integer'
break
case BigDecimal:
result = 'decimal'
break
default: result = 'default'
}
7.2、for循环语句对范围进行循环
/*
* 对范围进行循环
*/
def sum = 0
for (i in 0..9) {
sum += i
}
7.3、for循环语句对List进行循环
/* 对list进行循环 */
sum = 0
for (i in [1, 2, 3, 4, 2, 3, 1, 0]) {
sum += i
}
7.4、for循环语句对Map集合进行循环
/*
对map集合进行循环
*/
for (i in ["张三": 23, "lucy": 19, "Bob": 30]) {
sum += i.value
}