郑州高新区建设环保局网站,自豪地采用wordpress 删除,制作营销网页,网站站群一、简介 类型转换:当需要时,类型之间会自动发生类型转换: 字符串#xff08;String#xff09;、基本类型(如int) 和类型的包装类(如Integer) 类说明#xff1a;如果在一个groovy 文件中没有任何类定义#xff0c;它将被当做script 来处理#xff0c;也就意味着这个文件将…一、简介 类型转换:当需要时,类型之间会自动发生类型转换: 字符串String、基本类型(如int) 和类型的包装类(如Integer) 类说明如果在一个groovy 文件中没有任何类定义它将被当做script 来处理也就意味着这个文件将被透明的转换为 一个Script 类型的类这个自动转换得到的类将使用原始的groovy 文件名作为类的名字。groovy 文件的内容被打包进 run 方法另外在新产生的类中被加入一个main 方法以进行外部执行该脚本。
二、案例 提示:方法调用时,在不含有歧义的地方可以省略方法调用时的括号。这类似于使用${变量名}时括号在不引起歧义的地 方可以省略是一样的如
def num11;
def num2 2;
println $num1 $num2 ${num1num2}引号说明 def num11;
def num22;
def str11d; //双引号
def str2dsd; //单引号
//双引号运算能力,单引号用于常量字符串,三引号相当于模板字符串可以支持换行
println $num1 $num2 ${num1 num2}
//基本数据类型也可以作为对象使用,可以调用对象的方法
println(num1.getClass().toString())
println(str1.getClass().toString())
println(str2.getClass().toString())三个语句结构 Groovy 支持顺序结构从上向下依次解析、分支结构(if…else、if…else if …else…、switch…case、for、while、do…while) 具体参考官网http://www.groovy-lang.org/semantics.html#_conditional_structures 类型及权限修饰符 Groovy 中的类型有: 1.原生数据类型及包装类
2.类、内部类、抽象类、接口 3.注解 4.Trait: 可以看成是带有方法实现的接口 权限修饰符: public、protected、private
拓展Groovy 类与Java 类之间的主要区别是:
1.没有可见性修饰符的类或方法自动是公共的(可以使用一个特殊的注释来实现包的私有可见性)。2.没有可见性修饰符的字段将自动转换为属性不需要显式的getter 和setter 方法。3.如果属性声明为final则不会生成setter。4.一个源文件可能包含一个或多个类(但是如果一个文件不包含类定义的代码则将其视为脚本)。脚本只是具有一些特殊 约定的类,它们的名称与源文件相同(所以不要在脚本中包含与脚本源文件名相同的类定义)。
提示: 有关Groovy 中各种各样的数据类型和权限修饰符及Goovy 与Java 区别请参考 http://www.groovy-lang.org/objectorientation.html#_modifiers_on_a_property 集合操作 Groovy 支持List、Map 集合操作并且拓展了Java 中的API,具体参考如下方法 List:
add():添加某个元素plus():添加某个list 集合remove():删除指定下标的元素removeElement():删除某个指定的元素removeAll(): 移除某个集合中的元素pop():弹出list 集合中最后一个元素putAt():修改指定下标的元素each():遍历size(): 获取list 列表中元素的个数contains(): 判断列表中是否包含指定的值则返回true Map:put():向map 中添加元素remove():根据某个键做移除或者移除某个键值对、-支持map 集合的加减操作each():遍历map 集合 请参考官网:http://www.groovy-lang.org/syntax.html#_number_type_suffixes 提示:可以把不同的基本类型添加到同一集合中。 类导入 Groovy 遵循Java 允许import 语句解析类引用的概念。
import groovy.xml.MarkupBuilder
def xml new MarkupBuilder()
assert xml ! nullGroovy 语言默认提供的导入
import java.lang.*
import java.util.*
import java.io.*
import java.net.*
import groovy.lang.*
import groovy.util.*
import java.math.BigInteger
import java.math.BigDecimal这样做是因为这些包中的类最常用。通过导入这些样板代码减少了。 参考官网地址http://www.groovy-lang.org/structure.html#_imports 异常处理 Groovy 中的异常处理和java 中的异常处理是一样的。
def z
try {
def i 7, j 0
try {
def k i / j
assert false
} finally {
z reached here
}
} catch ( e ) {
assert e in ArithmeticException
assert z reached here
}参考官网地址 http://www.groovy-lang.org/semantics.html#_try_catch_finally 闭包 闭包Groovy 中的闭包是一个开放的、匿名的代码块它可以接受参数、也可以有返回值。闭包可以引用其周围作用 域中声明的变量。语法{ [closureParameters - ] statements } 其中[ closureParameters- ]是一个可选的逗号分隔的参数列表,参数后面是Groovy 语句。参数类似于方法参数列表这些参数可以是类型化的,也可以是非类型化的。当指定参数列表时需要使用- 字符用于将参数与闭包体分离。 参考http://www.groovy-lang.org/closures.html
闭包调用方式 闭包是groovy.lang.Closure 的实例。它可以像任何其他变量一样分配给一个变量或字段。 闭包对象(参数) 闭包对象.call(参数)
def isOdd { int i - i%2 ! 0 }
assert isOdd(3) true
assert isOdd.call(2) false
def isEven { it%2 0 }
assert isEven(3) false
assert isEven.call(2) true特殊说明 可以把闭包当作一个对象作为参数传递给方法使用
//无参闭包
def run(Closure closure){
println(run start....)
closure()
println(run end....)
}
run {
println running......
}
//有参闭包
def caculate(Closure closure){
def num11;
def num23;
println(caculate start....)
closure(num1,num2)
println(caculate end....)
}
caculate {x,y - println 计算结果为$x$y${xy}} //在build.gradle文件中我们见到的很多都是闭包格式的。