【Groovy】 Groovy笔记
一.简单了解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笔记的更多相关文章
- [转载][Groovy] Groovy与Java的区别(一)
原文地址:[Groovy] Groovy与Java的区别(一)作者:langyizhao 因为Groovy可以用Java的所有功能(虽然JVM不同的时候可能会比较麻烦,比如在Android上),所以G ...
- Groovy学习笔记(二)
在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...
- Groovy学习笔记(一)
1.1 安装Groovy Groovy主页:http://www.groovy-lang.org 确保本地系统安装了Java 1.1.1 在Windows系统上安装Groovy 1.创建环境变量GRO ...
- Groovy学习笔记(1)读取CSV文件
本篇分享讲展示如何在Groovy中读取CSV文件. 我们要读取的CSV文件foo.csv的内容如下: Groovy代码如下: //import packages import java.i ...
- Groovy学习笔记-动态类型
1.respondsTo方法判断对象是否存在指定方法 interface IHelp{ void helpMoveThings() } class Man implements IHelp{ void ...
- Groovy学习笔记-陷阱
1.def和in是关键字 2.==映射到了equals() 中,如果有Comparable接口实现,则优先compareTo str1 = 'hello' str2 = str1 str3 = new ...
- Groovy学习笔记-Java 5新特性支持
1.枚举enum enum CoffeeSize{ SHORT, SMALL, MEDIUM, LARGE, MUG } def orderCoffee(size){ print "Coff ...
- Groovy学习笔记-布尔求值
1.判断字符串为null或空字符串 def str = null if(str) println 'str is not null' else println 'str is null' str = ...
- Groovy学习笔记-实现接口
1.单个委托方法的实现 button.addActionListener( { println 'Implement ActionListener' } as ActionListener ) 2.实 ...
- Groovy学习笔记-使用多赋值
1.方法返回多个结果:返回数组,将多个变量逗号隔开,放在左侧圆括号中 def splitName (fullName) { fullName.split(' ') } def (firstName, ...
随机推荐
- DP&图论 DAY 6 上午
DP&图论 DAY 6 上午 双连通分量 从u-->v不存在必经边,点 点双连通分量 边双连通分量 点/边双连通分量缩点之后变成一个树 找连通块的时候不越过割点或者桥 P3469 [ ...
- 数据库开源框架之sqlcipher加密数据库
访问github链接:https://github.com/sqlcipher/android-database-sqlcipher 访问 http://sqlcipher.net/sqlcipher ...
- 阶段3 3.SpringMVC·_03.SpringMVC常用注解_7 ModelAttribute注解
这个注解可以作用在方法上,也可以作用在参数上 演示 user里面有三个属性, 表单只提交了两个属性.缺少了date属性 date没有获取到值因为也没提交这个值. 下面返回的user对象.上面就会拿到 ...
- Django框架 选项卡加active类的方案
------html部分----- <div class="left-menu"> <div class="menu-body"> &l ...
- xaml 中 引用嵌套类的对象
public class MotorType1 { public class MotorType2 { public class MotorType3 { /// <summary> // ...
- 虚拟机安装: vmware + ubuntu16.04
参考博客:https://blog.csdn.net/qq1326702940/article/details/82322079 这个博客讲的很详细,只要ubuntu版本相同,应该是一模一样. 注意点 ...
- DateTime.UtcNow 协调通用时间(UTC)
1.协调通用时间(UTC) 2.本地时间和UTC时间相互转化 DateTime localDateTime = DateTime.Now;//本地时间 DateTime utcDateTime = D ...
- Opencv中的WMesh
费了半天劲,终于把这个WMesh类搞懂了,可惜效果不佳,比Matlab中的mesh差多了. 使用WMesh前,需要有一个Mesh对象,Mesh是三维数据点的基本几何信息.颜色信息.索引信息等集成的对象 ...
- 白盒测试笔记之:testng 单元测试
前言 前一篇文章我们简单了解了下单元测试的概念以及使用junit进行入门了. 但想更好做自动化测试,还是得了解下testng,毕竟,作为一名技术人,NG(下一代)的测试框架总得了解与跟进. testn ...
- python 实例化 类方法 静态方法 成员变量 实例方法 等调用
1.参考代码如下 # coding:utf-8 class student: # 成员变量 ok = None like = '八戒你瘦了' # 实例方法 def __init__(self): # ...