一、初识groovy

2021-01-03  本文已影响0人  队长只有一个

一、什么是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

上一篇下一篇

猜你喜欢

热点阅读