一.简单了解Groovy

  Groovy简介

    Groovy是基于JVM的敏捷开发语言,语法与Java类似,但更加简洁,容错性也比Java强,同时Java能非常好的契合(例如Groovy能够使用Java的所有类库)

  特性

    1.语法上支持动态类型,闭包等新一代语言特性

    2.既支持面向对象编程,也支持面向过程编程

    3.既可以作为编程语言,也可以作为脚本语言

    更多特性可以查看官方文档

  搭建Groovy开发环境(Windows)

    1.下载Groovy的sdk,推荐官方链接 https://groovy.apache.org/download.html

    2.配置环境变量,与JDK类似,例如本人配置如下

      新建

        

      在Path中添加

        

    3.验证,在cmd中输入groovy -v即可看到自己groovy版本,如下图所示

      

    4.开发工具中使用Groovy进行开发

      例如IDEA,在较新的版本中默认装了Groovy插件,较老的版本手动下载相关的plugins。

      配置完毕后就可以使用IDEA开发Groovy项目

二.Groovy核心语法

  1.Groovy中定义数据类型

  Groovy中没有基本数据类型,数据类型的定义方式有强类型定义和弱类型定义两种方式。

    强类型定义方式:和Java一样,但是会自动转换成相应的包装类。

    弱类型定义方式: 通过def定义变量,它会自动选择数据类型,例如:

      def定义变量或方法

      

      输出结果如下

      

  2.Groovy中的字符串类型详解

    Groovy中除了String类型,还新增了一个GString类型,它们都是字符串类型,它们之间通常可以相互转换

    String类型定义方式:String类是在java中的lang包中,在Groovy中可以用单引号,双引号或三个单引号等方式来定义

        注意:1. 单引号和双引号方式如果要换行,必须在代码中添加换行符,而三引号直接回车即可

           2. 双引号的字符串中如果引入扩展表达式,那么这个类将会变成groovy中的GStringImpl类,而单引号或三个单引号则无法解析,所以开发中大多使用双引号

//案例
def str1 = 'hello world'
def str2 = '''hello
world'''
def str3 = "hello world"
println str2
def str4 = '${str1} ,你好世界'
def str5 = "${str1} ,你好世界"
println(str4)
println(str5)
println(str4.class)
println(str5.class)

      输出如下:

        

    String类型中的方法:除了java.lang.String中的方法以外,还包括DefaultGroovyMethods以及StringGroovyMethods中的方法

      常用方法:

        center()  字符串填充方法 (在括号中传入数字,会在字符串两端填充空格使字符串长度等于该数字)

        padLeft()  在字符串左端填充

        >  可以比较两个字符串的大小(ASCII码)

        []  可以直接获取字符串下标对应的字符,例如[1..2]会取出字符串第2个到第三个字符

        -  直接减去字符串中的某一段

        reverse()  字符串倒序

        capitalize9()  首字母大写

        ..  获取前后两个值区间的内容
        更多方法可以查看官方API文档...

  3.Groovy中的逻辑控制

    1.switch语句:

      在Java中switch不支持Long,double,float以及boolean数据类型,否则会报Cannot switch on a value of type long. Only convertible int values, strings or enum variables are permitted错误。

      而在Groovy中,switch支持更多数据类型,测试如下

long factor = 11
switch(factor){
case String: println "string"
break;
case Integer: println "Integer"
break;
case Long: println "Long"
break;
case Double: println "Double"
break;
case Float: println "Float"
break;
}

    2.for循环

      相比较与Java中的for循环,Groovy中使用起来更为快捷,例如取一个Map集合中的全部value值

for (i in ['a':97,'b':98,'c':99]){
println ii.value;
}

  4.Groovy中闭包

    1.简单了解闭包:通俗来说,闭包就是一段代码块,例如下列就是一个非常简单的闭包的定义和调用

def b1 = {//闭包的定义
println "hello world"
}
b1()//闭包的调用
b1.call()//闭包的调用

    2.带参数的闭包:

def b2 = {
String name , int time -> println "hello ${name},时间: ${time}" //左边表示参数类型及参数,右边调用了参数
}
b2("世界",2019)

    3.闭包的返回值:

      注意:闭包一定有返回值,就算没有return,闭包也会默认返回null,如果有return,则返回return的值

【Groovy】 Groovy笔记的更多相关文章

  1. [转载][Groovy] Groovy与Java的区别(一)

    原文地址:[Groovy] Groovy与Java的区别(一)作者:langyizhao 因为Groovy可以用Java的所有功能(虽然JVM不同的时候可能会比较麻烦,比如在Android上),所以G ...

  2. Groovy学习笔记(二)

    在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...

  3. Groovy学习笔记(一)

    1.1 安装Groovy Groovy主页:http://www.groovy-lang.org 确保本地系统安装了Java 1.1.1 在Windows系统上安装Groovy 1.创建环境变量GRO ...

  4. Groovy学习笔记(1)读取CSV文件

      本篇分享讲展示如何在Groovy中读取CSV文件.   我们要读取的CSV文件foo.csv的内容如下:   Groovy代码如下: //import packages import java.i ...

  5. Groovy学习笔记-动态类型

    1.respondsTo方法判断对象是否存在指定方法 interface IHelp{ void helpMoveThings() } class Man implements IHelp{ void ...

  6. Groovy学习笔记-陷阱

    1.def和in是关键字 2.==映射到了equals() 中,如果有Comparable接口实现,则优先compareTo str1 = 'hello' str2 = str1 str3 = new ...

  7. Groovy学习笔记-Java 5新特性支持

    1.枚举enum enum CoffeeSize{ SHORT, SMALL, MEDIUM, LARGE, MUG } def orderCoffee(size){ print "Coff ...

  8. Groovy学习笔记-布尔求值

    1.判断字符串为null或空字符串 def str = null if(str) println 'str is not null' else println 'str is null' str = ...

  9. Groovy学习笔记-实现接口

    1.单个委托方法的实现 button.addActionListener( { println 'Implement ActionListener' } as ActionListener ) 2.实 ...

  10. Groovy学习笔记-使用多赋值

    1.方法返回多个结果:返回数组,将多个变量逗号隔开,放在左侧圆括号中 def splitName (fullName) { fullName.split(' ') } def (firstName, ...

随机推荐

  1. ceph-----常用命令

    #查看存储池 ceph osd lspools #设置存储池副本数 ceph osd pool set data size 3 #查看存储池具体信息 ceph osd pool ls detail # ...

  2. JS编程规范

    在第一家公司用C++时,公司有着严格的代码规范,甚至到了严苛的地步,现在回想起来,对它充满感激.一个好的习惯让你收益终身. 之后使用JS/TS却没有为自己定一套编程规范,所幸为时不晚,在这里参考air ...

  3. 八十四:redis之redis的集合、哈希操作

    set集合操作 添加元素:sadd set value1 value2... 查看元素:smembers set 移除元素:srem set member 查看集合中的元素个数:scard set 获 ...

  4. Linux 查看操作系统版本信息 uname

    Linux 查看操作系统版本信息 uname uname 命令用于显示当前系统的版本信息. 带 -a 选项的 uname 命令会给出当前操作系统的所有有用信息. 命令如下: [root@node1 / ...

  5. CentOS6.5升级手动安装GCC4.8.2 转载

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  6. ASP.NET(C#)事务的创建、提交以及回滚 (附代码)

    1.事务是什么?            事务是应用程序中一系列严密的操作,所有的操作必须全部成功完成,否则每个操作中的所有更改都会被撤销.也就是事务具有原子性,一个事务中的一系列操作要么全部成功,要么 ...

  7. PJzhang:URL重定向漏洞的72般变化

    猫宁!!! 反射型xss的利用可以给对方发送钓鱼链接,窃取对方cookie,进入对方账户.   利用url重定向漏洞,发送给对方一个钓鱼链接,重定向到一个恶意网页,比如一个假的银行网站,被盗取账号密码 ...

  8. 【机器学习】梯度、Hessian矩阵、平面方程的法线以及函数导数的含义

    想必单独论及" 梯度.Hessian矩阵.平面方程的法线以及函数导数"等四个基本概念的时候,绝大部分人都能够很容易地谈个一二三,基本没有问题. 其实在应用的时候,这几个概念经常被混 ...

  9. kmp算法分析和C++实现

    知乎高赞分析 作者:逍遥行 链接:https://www.zhihu.com/question/21923021/answer/37475572来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  10. 自然语言处理工具hanlp定制用户词条

    作者:baiziyu 关于hanlp的文章已经分享过很多,似乎好像大部分以理论性的居多.最近有在整理一些hanlp应用项目中的文章,待整理完成后会陆续分享出来.本篇分享的依然是由baiziyu 分享的 ...