构建工具发展史:Ant -- > Maven --> Gradlejava
Gradle 由Groovy语言编写,所以基于Groovy环境运行。编程
Groovy也是另一种为DSL语言domain specific language,脚本编程语言,matlab是DSL语言的一种,专门用来计算的,还有UML建模语言,在建模方向上有专供。因此DSL语言只用于某一特定领域,也被称为领域语言。api
基于JVM开发的语言,因此可以使用java的库,与java完美结合闭包
点击这里--》mac中搭建groovy环境dom
点击这里--》IDEA中建立Groovy简单工程编程语言
和java很像,能够建立类同于java的一个类,以下:工具
因此groovy的工程和java很类似,可是看上面的截图你们会发现,"public"还有这个";"都是灰色的,表示无关紧要,这就是groovy的某一个与java区别的地方,一样咱们也能够把String[] 参数类型省略,那么咱们省略以后也能输出一样的表达结果:this
还有一点就是,它与lua语言也有点相似,那就是能够做为脚本语言,那么做为脚本语言咱们也能够不须要class的声明,以下:lua
一样的结果,因此咱们对这个简单的了解以后咱们进入基础语法的讲解,毕竟groovy虽然与java差很少,但仍是有些不一样的地方。spa
对象类型(没有int double类型,都会转换成Integer,Double)
强类型定义就是相似与java的形式,String name ="mujiutian",而弱类型定义的话,咱们相似于java10的var类型,有系统本身转换为本身认为的数据类型,以下
由上咱们能够看到数据类型就是GString,这个就是可扩展的类型,而后咱们能够用'' 表示,一样能够用""表示。
def name = "mujiutian" def name1 = "osc" def name2 = 'oscChina' //name中间。两边字符串为M,达到11长度 println name.center(11,"M") //在左边添加2的字符串,达到9的长度 println name1.padLeft(9,"2") //比较两个字符串大小 println name.compareTo(name1) //比较两个字符串大小,和compareTo同样 println name > name1 //获取第一个字符 println name[0] //获取0-3的字符 println name[0..3] //两个字符串相减,前者必须包含后者 println name2.minus(name1) //和上面同样 println name2 - name1 //反过来 println name2.reverse() println name2.capitalize()
结果为:
MmujiutianM 222222osc -2 false m muji China China anihCcso OscChina
def var = 1.5 def result switch (var){ case "soo": result = "this is soo" break case Integer: result = "this is int type" break case [5,6,7,'in']: result = "hah" break case 10..90: result ='dsk' break case BigDecimal: result ='this is bigdecimal' break default: break } println result
结果为:
this is bigdecimal
//直接循环 def sum1 = 0 for (i in 0..9){ sum1 +=i } //list循环 def sum2 =0 for (i in [1,2,3,4,5,6,7]){ sum2 +=i } //map循环 def sum3 =0 for (i in ['key1':1,'key2':2,'key3':3]){ sum +=i.value }
1.6.1 闭包概念:一个代码块
1.6.2 闭包参数:一个或者多个
1.6.3 闭包返回值:把println 换成return
def clouser = {String name -> return "hello ${name} " } def result = clouser.call('groovy') println(result)
闭包的用法相似与java8中的lambda表达式,以下:
int fab(int num){ int result = 1 //从1增长到num,downto(1,..)是降低到1 1.upto(num,{num1 -> result *= num1}) return result } int cal(int num){ int result =0 //起始值0 num.times { num1 -> result*=num1 } }
1.6.4闭包关键变量
this、owner、delegate