【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

相关文章

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm