groovy教程入门


最近在udemy上学习gradle,中间穿插了groovy的内容,本文主要介绍groovy的基础数据类型以及语法,如果本文对您有帮助,请不要吝啬您的点赞,谢谢~

groovy文件编译运行

  • 创建文件 Start.groovy ,并写上:println("hello"), 利用groovy命令行编译运行:groovy src/com/xj/groovy/Hello/Start.groovy, 得到如下结果:
    groovy编译运行成功

groovy的基础类型

float

a = 10.24F
println a
println a.class

输出:
groovy float

可以看见groovy里面的float类型就是Java里面的Float类型

String

常规String
  • 单引号或者双引号
s = 'Hello' // "Hello"
println s
println s.class

输出:
groovy String类型

  • 可以换行的
s = '''
        All the power is with in you.
        You can do anything and everything
        '''
println(s)
println(s.class)

输出
带换行的String

GStringImpl

name = "friend"
s = "hello ${name}"
println s
println s.class

输出:
Groovy GStringImpl

正则表达式

emailPattern = /([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})/
println emailPattern.getClass()
println "test@gmail.com" ==~ emailPattern
println "testgmail.com" ==~ emailPattern

输出:
Groovy 正则表达式

List

LinkedList l = [1, 2, 3]
println l         // [1, 2, 3]
println l.class   // class java.util.LinkedList

l << 4
println l         // [1, 2, 3, 4]

l = l + [5, 6, 7]
println l         // [1, 2, 3, 4, 5, 6, 7]

println l - [3, 5] // [1, 2, 4, 6, 7]

l.each {println it}  // 1 2...
l.reverseEach {println it}  // 7 6 ..
l.eachPermutation {println it}  // 排列组合

Map


m = [:]
println(m)             // [:]
println(m.getClass())  // class java.util.LinkedHashMap

m = [courseName: 'Gradle', rating: 5, price: 20]
println(m)            // [courseName:Gradle, rating:5, price:20]

m.each {
    k, v ->
        println k
        println v
}
println m.courseName          // Gradle
println m['courseName']       // Gradle
println m.get('courseName')   // Gradle

Groovy语法

Closures with {}

c = {
    n = 2 -> println(n%2 == 0 ? "even": "odd")
}
c.call() // even
c.call(1) // odd

Closures 2

4.times {n->print(n)}
println()
4.times {print(it)}
println()

输出:
groovy closures times

Method

方法

int product(int x, int y) {
    return x*y
}
println product(10, 5)   // 50
result = product 10, 5
println(result)           // 50

带默认值

int product(int x = 3, int y) {
    return x*y
}
result = product 5
println(result)           // 15

map作为参数

void display(Map productDetails) {
    println productDetails.name
    println productDetails.price
}

display([name: 'IPhone', price: 1000])

Class

class Patient {
    def firstName, lastName, age
    static hospitalCode = "huoshan"

    void setLastName(lastName) {
        if (lastName == null) {
            throw new IllegalArgumentException("Last name can not be null");
        }
        this.lastName = lastName
    }
    static void display() {
        println hospitalCode
    }
}

p = new Patient(firstName: 'jhon', age: 40, lastName: 'jack')
p.setLastName("buffer")
println p.firstName + " " + p.lastName + " " + p.age  // jhon buffer 40
Patient.display()            // "huoshan"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值