groovy基础

与java比较
- Groovy完全兼容java的语法
- 分号是可选的
- 类、方法默认是public的
- 编译器给属性自动添加getter/setter方法
- 属性可以直接用点号获取
- 最后一个表达式的值会被作为返回值
- ==等同于equals(),不会有NullPointerExceptions

public class Person{//类、方法默认是public的
    private String name;
    private int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age  //分号是可选的
    }

    String getName() {
        return name
    }

    void setName(String name) {
        this.name = name
    }

    int getAge() {
        age //最后一个表达式的值会被作为返回值
    }
}

Person p = new Person('张三',18)
p.name = '李四'   //属性可以直接用点号获取
//println(p.name)
println p.name //括号可去掉,中间加空格

def version = 1 //可选类型定义,相当于javascript中的var

assert version == 2 //可直接使用断言

高效的Groovy特性
1. assert语句
2. 可选类型定义(使用def)
3. 可选的括号
4. 字符串
5. 集合API
6. 闭包

def version = 1 //可选类型定义,相当于javascript中的var

assert version == 1 //可直接使用断言

println version //括号是可选的

//字符串
def s1 = 'imooc' //单引表示就是字符串
def s2 = "gradle version is ${version}"     //双引可插入变量
def s3 = '''my
name is
imooc'''
//三个单引号可以换行

println s1
println s2
println s3

//集合list
def person = ['zhangsan','lisi']    //定义list集合
person << 'wangwu'  //增加元素
assert person.getClass() == ArrayList   //通过

//集合map,对应的是java.util.LinkedHashMap
def house = ['songjiang':'big','lujiazui':'small']
house.jiuting = 'normal'
println house.jiuting
println house.getClass()

//闭包 在构建脚本中,闭包被当做方法参数来使用
def c1 = {
    v ->
        println v
}
def c2 = {
    println 'hello'
}
def method1(Closure closure){
    closure('param')
}
def method2(Closure closure){
    closure()
}
method1(c1)
method2(c2)

用groovy看一个工程的build.gradle文件

//构建脚本中默认都是有个project实例的,默认的作用域都是project
//apply是project的方法
apply plugin:'java' 

//project定义的一个属性version并赋值为0.1
version = '0.1'

//repositories是project的方法,闭包作为参数
repositories {
    mavenCentral()
}

dependencies {
    compile 'commons-codec:commons-codec:1.6'
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值