【Groovy系列 一】Groovy数据类型(字符串、数值型、集合、数组、Map)

0.前言

在这里记录了Groovy的基础简介,本系列开始对Groovy的进一步学习

https://blog.csdn.net/weixin_44484715/article/details/137221630

安装Groovy成功后,有两种运行Groovy的方式:

  1. 在Groovy安装目录/bin目录下,有一个groovyConsole.bat,双击可以打开Groovy控制台
  2. 在Idea中运行

1.字符串

groovy中的字符串可以有三种形式:单引号、双引号、三引号。他们之间的区别如下:

  1. 单引号是最简单的字符串,可以理解为仅支持作为写死的字符串使用,其他作用一概没有
  2. 双引号在单引号的基础上,支持变量应用,使用${}作为占位符
  3. 三引号在单引号的基础上,支持折行(注意三引号不支持变量引用)
groovy 复制代码
// 双引号支持变量引用
def name = 'jack'
def bigName = "hello ${name}"
println(bigName) // 输出:hello jack

// 三引号支持折行
def person = '''name=jack
age=12
sex=man'''
println(person) 
// 输出:
//name=jack
//age=12
//sex=man

注意:单引号和三引号是不能与java代码混用的,属于groovy特色

2.数值型

groovy的数值型包含整数型和小数型两种。

整型包括:

  1. byte
  2. char
  3. short
  4. int
  5. long
  6. BigInteger:无限精度,类似于Java中的BigDecimal

使用def定义整型变量时,groovy会自动赋予变量类型

groovy 复制代码
def num1 = 1
print(num1 instanceof Integer)
// 输出:true

def num2 = 111111111111;
print(num2 instanceof Long)
// 输出:true

groovy也可以定义非十进制整数:

  1. 二进制:以0b为前缀
  2. 八进制:以0为前缀
  3. 十六进制:以0x为前缀

小数型包括:

  1. float
  2. double
  3. BigDecimal

Groovy可以使用科学计数法表示相应类型的数值,支持使用下划线对数字进行分割

groovy 复制代码
assert 1E3 != 1_000.0
/** 输出:
Assertion failed: 

assert 1E3 != 1_000.0
           |
           false
**/

3.集合类型

  • 定义集合使用 [],也可以在集合中放置不同类型的元素
groovy 复制代码
def nums = [1, 2, 3]
assert nums instanceof List

def nums2 = [1, "a", true]
  • groovy没有自己的集合类型,在定义集合对象时,默认采用java的ArrayList类型。也可以使用as,强制定义List接口的实现类
groovy 复制代码
def nums3 = [1,1,1] as LinkedList
assert nums3 instanceof java.util.LinkedList
  • 可以通过[]来取用集合中的元素,下标可以是正数也可以是负数(类似python)
groovy 复制代码
def nums = [1, 2, 3]
assert nums[0] == 1
assert nums[-1] == 3
  • 可以使用 << 在集合末尾添加元素
groovy 复制代码
def nums = [1, 2, 3]
nums << 4
assert nums[3] == 4
  • 可以定义多维集合,访问元素类似于java数组
groovy 复制代码
def nums4 = [[1,2], [3,4]]
assert nums4[0][1] == 2

4.数组

  • groovy复用List来表示数组,但必须显式声明数组的类型,或者使用as强制转为目标类型
groovy 复制代码
String[] strArray = ['1', '2'];
assert strArray instanceof String[]

def numArray = [1,2,3] as int[]
assert numArray instanceof int[]
  • groovy支持java风格的数组初始化
groovy 复制代码
def nums5 = new int[] {1,2,3}
assert nums5[-1] == 3

注意,数组与List不同的是,定义数组时已经制定了类型,因此一个数组中存储的元素一定是相同类型的

5.Map类型

groovy的map对象就是Java中的LinkedHashMap

  • 使用[]定义一个map,map中的key、value对使用逗号分隔。可以使用[]取出key对应的value,也能使用.取出value
groovy 复制代码
def map1 = [red: 1, green:2]
assert map1['red'] == 1
assert map1.green == 2

如果想使用变量作为key值,需要使用(key变量)的形式

groovy 复制代码
def key = 1;
def map2 = [(key): 10]
assert map2.containsKey(key)
相关推荐
听风吟丶5 小时前
Java 9 + 模块化系统实战:从 Jar 地狱到模块解耦的架构升级
开发语言·python·pycharm
做怪小疯子5 小时前
JavaScript 中Array 整理
开发语言·前端·javascript
旭编5 小时前
牛客周赛 Round 117
java·开发语言
六元七角八分6 小时前
CSDN文章如何转出为PDF文件保存
开发语言·javascript·pdf
froginwe116 小时前
MongoDB 删除数据库
开发语言
Java小混子6 小时前
golang项目CRUD示例
开发语言·后端·golang
想搞艺术的程序员6 小时前
Go 优雅关闭实践指南:从原理到框架落地
开发语言·后端·golang
m5655bj6 小时前
Python 查找并高亮显示指定 Excel 数据
开发语言·python·excel
洛克希德马丁6 小时前
Qt 配置Webassemble环境
开发语言·qt·webassembly·emscripten·emsdk
武子康6 小时前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j