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

2024-04-01 10:52

本文主要是介绍【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. 三引号在单引号的基础上,支持折行(注意三引号不支持变量引用)
// 双引号支持变量引用
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会自动赋予变量类型

def num1 = 1
print(num1 instanceof Integer)
// 输出:truedef num2 = 111111111111;
print(num2 instanceof Long)
// 输出:true

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

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

小数型包括:

  1. float
  2. double
  3. BigDecimal

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

assert 1E3 != 1_000.0
/** 输出:
Assertion failed: assert 1E3 != 1_000.0|false
**/

3.集合类型

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

4.数组

  • groovy复用List来表示数组,但必须显式声明数组的类型,或者使用as强制转为目标类型
String[] strArray = ['1', '2'];
assert strArray instanceof String[]def numArray = [1,2,3] as int[]
assert numArray instanceof int[]
  • groovy支持java风格的数组初始化
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
def map1 = [red: 1, green:2]
assert map1['red'] == 1
assert map1.green == 2

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

def key = 1;
def map2 = [(key): 10]
assert map2.containsKey(key)

这篇关于【Groovy系列 一】Groovy数据类型(字符串、数值型、集合、数组、Map)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866973

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st