Groovy 基本类型

Groovy 基本类型,第1张

概述Groovy 基本类型 官方文档:http://www.groovy-lang.org/syntax.html 字符Characters 不像Java,Groovy没有明确的Characters。但是我们可以有如下三种不同的方式来将字符串作为字符处理 char c1 = 'A' // 指定char类型assert c1 instanceof Characterdef c2 = 'A' Groovy 基本类型

官方文档:http://www.groovy-lang.org/Syntax.HTML

字符Characters

不像Java,Groovy没有明确的Characters。但是我们可以有如下三种不同的方式来将字符串作为字符处理

char c1 = 'A'  // 指定char类型assert c1 instanceof Characterdef c2 = 'A' as char  // 使用as *** 作符进行类型强制转换assert c2 instanceof Characterdef c3 = (char) 'A'  //类型转换assert c3 instanceof Character

第一种方式通常用于字符被保存在变量中,另外两种通常用于方法调用时一个char值作为参数传递

Numbers 整数

和Java中一样,支持 byte、 char、 short、 int、 long、 java.lang.BigInteger

// 基本类型byte  b = 1char  c = 2 short s = 3 int   i = 4long  l = 5// infinite precisionBigInteger bi =  6

如果使用def关键字定义变量,那么整数的类型将会变化,将使用其容量能够容纳这个数字的类型

def a = 1assert a instanceof Integerdef b = 2147483647  // Integer.MAX_VALUEassert b instanceof Integerdef c = 2147483648  // Integer.MAX_VALUE + 1assert c instanceof Longdef d = 9223372036854775807  // Long.MAX_VALUEassert d instanceof Longdef e = 9223372036854775808  // Long.MAX_VALUE + 1assert e instanceof BigInteger
二进制、八进制、十六进制表示

二进制0b

short xShort = 0b11001001assert xShort == 201 as short

八进制 0

int xInt = 077assert xInt == 63byte xByte = 032assert xByte == 26 as byte

十六进制 0x

long xLong = 0xffffassert xLong == 65535LBigInteger xBigInteger = 0xaaaaassert xBigInteger == 43690gDouble xDouble = new Double('0x1.0p0')assert xDouble == 1.0dint xNegativeInt = -0x77assert xNegativeInt == -119
小数

小数类型和Java一样:float、 double、 java.lang.BigDecimal

// 基本类型float  f = 1.234double d = 2.345assert f instanceof float// infinite precisionBigDecimal bd =  3.456

可以使用指数字母eE,后跟可选的+-,和一个整数

assert 1e3  == 1_000.0assert 2E7  == 20_000_000.0  // 可用_分隔assert 3e+1 ==     30.0assert 4E-2 ==      0.04

小数的默认类型是BigDecimal,但给参数类型为float或double的方法传入没有明确类型的数字也是可以的

小数不能用二进制、八进制或十六进制表示

可以使用下划线分隔数字,更容易阅读:

long creditCardNumber = 1234_5678_9012_3456Ldouble monetaryAmount = 12_345_132.122_345long hexWords = 0xFFEC_DE5Elong bytes = 0b11010010_01101001_10010100_10010010
类型后缀

assert 123L == new Long("123")assert 1.23E23D == new Double('1.23E23')assert 034G.class == BigInteger // octal
数学运算

数学运算的行为以及它们的结果类型

Boolean
def bool = trueboolean bool = truebool = false

此外,Groovy有特殊的规则(通常称为Groovy真理),用于将非布尔对象强转为布尔值

Lists

Groovy支持java.util.List类型,List变量默认实现是ArrayList,元素可以是不同类型

List List = [1,2,3] def List2 = [1,"a",List,true] //元素可以是不同类型assert List2 instanceof ArrayList //List变量默认类型是ArrayList

定义不同类型的List,有两种方式

def linkedList = [2,3,4] as linkedList //使用as定义linkedList linkedList2 = [2,4]linkedList[0] = 5

可以使用get(index)方法,索引范围 0 ~ List.size() - 1
或使用角标[]访问或修改元素,[]内部的索引可以是整数或负数,负数表示从右向左访问

assert linkedList[1] == 3assert linkedList[-1] == linkedList.get(2)

使用 << 左移给列表追加元素

List2 << new Date()assert List2.size() == 5println(List2[4])  // Fri Aug 18 12:04:39 CST 2017

获取List子集

assert List2[1,3] == ["a",true]assert List2[0..2] == [1,List]

多维List

List multiList = [[0,1],[2,3]]assert multiList[1][0] == 2
Arrays

数组的定义:声明类型或强制转换

//定义数组int[] intArr1 = [1,3] def intArr2 = [1,3] as int[]//定义数组,指明长度def intArr3 = new int[3][2]//不指明长度int[][] intArr4;intArr4 = [[1,2],[3,4]]assert intArr1 instanceof int[] assert !(intArr1 instanceof List)assert intArr1.size() == 3assert intArr1.length == 3//赋值intArr2[1] = 5assert intArr2[1] == 5
Maps

定义Map

def colors = [red: '#FF0000',green: '#00FF00',blue: '#0000FF']

使用键检查:当使用键的名称时,我们实际上在Map中定义了字符串键

//使用下标检查assert colors['red'] == '#FF0000'//使用属性检查assert colors.green == '#00FF00'

可以使用数字作为键,因为数字可以清楚地识别为数字,所以Groovy不会像前面的例子那样创建字符串键

def map2 = [1:'one',2:'tow']  // key的类型为数字assert map2[1] == 'one'

修改值

colors.green = '#00F0F0'assert colors.green == '#00F0F0'

使用下标符号或属性添加新的键值对

colors.pink == '#FF00FF'colors['yellow'] == '#FFFF00'

Map实际类型为java.util.linkedHashMap

assert colors instanceof java.util.linkedHashMap

访问不存在的key时返回null

assert colors.unkNown == null

使用变量作为键

def key = 'name'def map3 = [key:'Guillaume'] assert !map3.containsKey('name')assert map3.containsKey('key')

与“Guillaume”名称关联的键实际上是字符串"key",而不是与key变量关联的值

正确写法

def map4 = [(key):'Guillaume']  // key用括号括起来assert map4.containsKey('name')assert map4.containsKey(key)

Map的键不能修改

key = 'othername'assert !map4.containsKey('othername') assert !map4.containsKey(key)  // 不再包含key
总结

以上是内存溢出为你收集整理的Groovy 基本类型全部内容,希望文章能够帮你解决Groovy 基本类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存