Groovy基础知识

Groovy是用于Java虚拟机的一种敏捷动态语言,它是一种成熟的面向对象编程语言,既可以面向对象编程,也可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时,又具有闭包和动态语言中的其他特性。
在这里插入图片描述

Groovy与Java比较

  • Groovy完全兼容Java的语法(最后都是编译成字节码文件)
  • 分号是可选的
  • 类、方法默认是public的
  • groovy编译器给属性自动添加getter/setter方法
  • 属性可以直接用点号获取
  • 最后一个表达式的值会被作为返回值(如果这是一个有返回值的方法,那么最后的return可以省略)
  • ==等同于equals(),不会有NullPointerExceptions

Groovy高效特性

  • assert语句(在程序的任何地方都可以断言操作)
  • 可选类型定义(弱类型编程语言,def直接变量名即可)
  • 可选括号
  • 字符串:单引号/双引号/三引号
  • 集合API
  • 闭包

Groovy示例代码

public class ProjectVersion{
    private int major;
    private int minor;

    ProjectVersion(int major, int minor) {
        this.major = major
        this.minor = minor
    }

    int getMajor() {
        major
    }

    void setMajor(int major) {
        this.major = major
    }
}

ProjectVersion v1 = new ProjectVersion(1,2);
println v1.major

ProjectVersion v2 = null
println v1 == v2

Groovy基础知识演练

// 1.可选的类型定义
def version=1.0
// 2.assert
assert version==1.0 // 输出true
// 3.括号是可选的
println(version)
println version
// 4.字符串
def s1='groovy' // 仅仅是个字符串
def s2="gradle version is ${version}" // 可以插入变量
def s3='''This
is
groovy''' // 可以换行
// 5. 集合API --- List
def buildTools=['ant','maven']  // 默认对应java类型是ArrayList
buildTools << 'gradle'  // 向集合中追加元素
assert buildTools.getClass() == ArrayList // true
assert buildTools.size() == 3   // true
// 5. 集合API --- Map
def buildYears=['ant':2000,'maven':2004]  // 默认对应java类型是LinkedHashMap
buildYears.gradle = 2009  // 向Map中追加元素
println buildYears.ant  // 通过key获取value
println buildYears['gradle']    // 通过key获取value

assert buildYears.getClass() == LinkedHashMap // true
// 6.闭包  --- 简单的说闭包就是一个代码块,和一个方法一样,可以有参数,可以无参数;
// 闭包可以赋值给一个变量
// 闭包也可以当一个参数传递给一个方法,像普通方法调用
// 闭包的使用方式有很多种

// 以下是在gradle中最常见的使用方式
def c1={    // 定义一个闭包
    v -> println v;
}

def c2={    // 定义一个闭包
    print "Hello"
}

// 定义一个方法(函数),一定不要导入Closure
def method1(Closure closure) {
    closure ver='parameter'
}
// 定义一个方法(函数),一定不要导入Closure
def method2(Closure closure){
    closure()
}

method1(c1) // 执行结果:parameter
c1 v:'java'
method1(c1) // 执行结果:[v:java]

method2(c2) // 执行结果:Hello

Gradle构建脚本示例

// 这个一个构建脚本
// 每个构建脚本默认都有一个项目构建实例
// 这个脚本中默认的作用域就是这个project

apply plugin:'java'         // plugin:'java'是命名参数

version = '0.1'

repositorys {       // 方法
    mavenCentral()  // 闭包
}

dependencies {  // 方法
    compil 'commons-code:commons-codec:1.6' // 闭包
}

8个案例演示基础语法
类型转换:当需要时,类型之间会自动发生类型转换: 字符串(String)、基本类型(如int) 和类型的包装类(如Integer)
类说明:如果在一个groovy 文件中没有任何类定义,它将被当做script 来处理,也就意味着这个文件将被透明的转换为一个Script 类型的类,这个自动转换得到的类将使用原始的groovy 文件名作为类的名字。groovy 文件的内容被打包进run 方法,另外在新产生的类中被加入一个main 方法以进行外部执行该脚本。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值