一.简单了解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. [Java]手动构建SQL语法树(sql简单无嵌套)并输出与之对应的SQL语句之二

    Entry入口 main中自顶向下手动创建了sql语法树 package com.hy; // 构建SQL语法树 public class Entry { public static void mai ...

  2. Runtime 源码阅读

    Runtime 属性说明 /** * 每一个 Java 应用程序都有一个关联的运行时对象 * * @author unascribed * @see java.lang.Runtime#getRunt ...

  3. tableau extension 调研

    概述 最近调研了一下 tableau extensions 的实现,有一些心得,记录下来,供以后开发时参考,相信对其他人也有用. 总的来说,写 tableau extensions 还是挺简单的,只是 ...

  4. visual studio 2019 中初始化 vue.js 项目

    vs项目模板,webpack模板的创建方式在vs里创建后,npm install的过程会卡很久,暂时原因不明,感觉应该是文件太多,需要写入太多零碎文件. 试了几种初始化方法,还是用最新cli创建最好, ...

  5. Returning array from function in C

    以下为了通俗易懂,使用意译. I've here very intersting discussion about the best and common ways to return an arra ...

  6. Eclipse MAT和jvisualvm分析内存溢出

    ---------------------------------------------mac os版------------------------------------------------ ...

  7. python配置主机名

    .准备hosts模板 mkdir -p /k8s/profile cat >/k8s/profile/hosts<<EOF 192.168.0.91 test1 192.168.0. ...

  8. Centos7桥接网络、DNS、时间同步配置

    Centos配置桥接网络.DNS服务和时间同步 1.配置桥接网络 2.配置虚拟机网卡,采用的是静态ip方式 重启network服务 3.配置dns 4.关闭防火墙和selinux 5.ping外网域名 ...

  9. KVM虚拟化原理

    CPU虚拟化 KVM虚拟化是需要硬件支持的.我们可以用 egrep -o '(vmx|svm)' /proc/cpuinfo 来查看是否支持CPU虚拟化. 虚拟机中每一个vCPU对应qemu-kvm中 ...

  10. 【Python开发】python发送各类邮件的方法

    转载: python发送各类邮件的主要方法 python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 发送 ...