一、什么是groovy
groovy是一种能够运行在JVM的动态语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
二、为什么需要学习groovy
1、强大的构建工具gradle是一种基于groovy的领域特定语言(DSL),所以,要学习gradle必须懂groovy语法。学习gradle可以提升工程构建的能力,简化工作流程,提升团队工作效率(DSL语言的核心思想:求专不求全,解决特定问题)。
2、groovy可以与java完美结合,而且可以使用java所有的库。懂java的人学习groovy很容易。
三、开发环境配置
官网下载groovy sdk,解压到合适的目录,在电脑中配置环境变量。sdk bin目录下有groovy 和 groovyc命令,作用相当于java 和 javac。开发工具可以使用:intellij idea。
四、groovy基本语法(与java的差异)
案例1:groovy中的变量类型最终都是对象类型。
package variable
int x = 10
println(x.class)
double y = 3.14
println(y.class)
输出结果:
class java.lang.Integer
class java.lang.Double
案例2:弱类型定义。
package variable
def x = 10
println(x.class)
def y = 3.1415
println(y.class)
def z = "mansn"
println(z.class)
输出结果:
class java.lang.Integer
class java.math.BigDecimal
class java.lang.String
阶段小结:强类型和弱类型的使用场景:变量自己用,可以用弱类型。变量需要外界使用,或者传参数,用强类型比较好。外界知道要传什么类型的变量过来。
案例3:变量类型可以运行过程改变。
package variable
def x = 10
println(x.class)
x = "mansn"
println(x.class)
输出结果:
class java.lang.Integer
class java.lang.String
案例4:groovy控制语句(switch的内容可以是任一类型的对象)。
package variable
def x = 4.24
switch(x){
case "foo":
println("found foo")
break
case [3,4,4,"list"]:
println("found list")
break
case 3..8:
println("found range")
break
case Integer:
println("Integer")
break
case BigDecimal:
println("big decimal")
break;
case 4.24:
println("found 4.24")
break
default:
println("no no")
break
}
输出结果:(可以代替java中的instanceof)
big decimal
案例5:groovy循环语句
package variable
def sum = 0
for (i in 1..9){
sum += i
}
println("sum = ${sum}")
sum = 0
for(i in [3,4,5,23]){
sum += i
}
println("sum2 = ${sum}")
sum = 0
for (i in ["lili":1,"lucy:":2,"xiaoming":3]){
sum += i.value
}
println("sum3 = ${sum}")
输出:sum = 45
sum2 = 35
sum3 = 6
五、String与GString
案例6:groovy中定义字符串可以用单引号、双引号、三引号。
package variable
def a = "a"
def b = "b"
def name = '''xx
xx'''
println(name)
三个引号定义的字符串也是String类型的,但是是有格式的。(可以直接写json数据)。用双引号,单引号,三引号定义的字符串都为String类型(双引号正常定义的时候为String类型),而双引号可以定义可扩展字符串,单引号和三引号不可以。
package variable
def name = "mansn"
def sayHello = "Hello:${name}"
println(sayHello)
println(sayHello.class)
输出结果:
Hello:mansn
class org.codehaus.groovy.runtime.GStringImpl
案例7:花括号里可以是任意表达式,不仅仅是一个变量
package variable
def sum = "the sum of 2 and 3 equals ${2+3}"
def result = echo(sum)
println(result)
println(result.class)
String echo(String str){
return str
}
输出结果:(GString自动转换成String了)
the sum of 2 and 3 equals 5
class java.lang.String