找回密码
 立即注册
首页 业界区 业界 【Groovy】变量和基本数据类型

【Groovy】变量和基本数据类型

缀访 2025-10-1 21:49:43
1 变量

​    1)变量的声明
  1. int a = 1
  2. def b
  3. def c = 1
复制代码
​    在脚本中定义变量无需声明变量的类型,如下。在类不能使用以下方式定义变量,否则会编译报错。
  1. a = 1
  2. b = "abc"
复制代码
​    2)变量命名规范

  • 变量名可以由字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头,且大小写敏感。
  • 不能有空格、@、#、+、-、/ 等符号。
  • 应该使用有意义的名称,达到见名知意的目的,最好以小写字母开头。
  • 不能与 Groovy 语言的关键字或是基本数据类型重名。
​    3)可变类型变量
​    使用 def 声明的变量是可变类型变量。以下变量赋值是合法的。
  1. def a = new Object()
  2. a = 1
  3. a = 1f
  4. a = "xyz"
  5. a = new StringBuffer()
复制代码
​    以下变量赋值是非法的。
  1. int a = 1
  2. a = "abc"
复制代码
2 基本数据类型

​    Groovy 中基本数据类型主要有空类型(void)、整数类型(byte、short、int、long、BigInteger)、浮点类型(float、double、BigDecimal)、字符类型(char)、字符串类型(String)。
2.1 空类型

2.1.1 void 和 null

​    Groovy 中空类型用 void 表示,空值用 null 表示,与 java 的使用方法一样,如下。
  1. BigInteger a = null
  2. def b = null
  3. void fun1() {
  4.     /***/
  5. }
  6. Object fun2() {
  7.     return null
  8. }
复制代码
2.1.2 安全访问符(?.)

​    安全访问符(?.)用于告诉编译器:如果对象非空才访问点后面的内容,否则不做任何处理。
  1. String a = "abc"
  2. println(a?.substring(1)) // 打印: bc
  3. String b = null
  4. println(b?.substring(1)) // 打印: null
复制代码
2.1.3 Elvis 运算符(?:)

​    Elvis 运算符(?:)用于告诉编译器:如果 ?: 前面的值为 null,就取 ?: 后面的值。
  1. String a = "abc"
  2. String b = a ?: "xyz"
  3. println(b) // 打印: abc
  4. String c = null
  5. String d = c ?: "xyz"
  6. println(d) // 打印: xyz
复制代码
2.2 数字类型

2.2.1 整数类型

​    1)整数类型变量
类型大小(位)最小值最大值案例byte8-128127byte a = 1short16-3276832767short a = 1int32-2,147,483,648                         (-2^31)2,147,483,648(2^31-1)int a = 1                         def a = 100                         def a = 100I                         def a = 100ilong64-9,223,372,036,854,775,808(-2^63)9,223,372,036,854,775,807                         (2^63-1)long a = 1                         def a = 12345678901                         def a = 100L                         def a = 100lBigInteger——————BigInteger a = 1                         def a = new BigInteger('123')                         def a = 1G                         def a = 1g​    2)整数的进制表示
  1. // 二进制(以0b开头)
  2. def a = 0b101
  3. // 八进制(以0开头)
  4. def a = 0765
  5. // 十六进制(以0x开头)
  6. def a = 0x8af
复制代码
​    3)数字分割
  1. def a = 1_23_456_7
  2. def b = 1.23_456_7
  3. def c = 0xFF_FF_FF
复制代码
​    4)times
  1. 4.times {
  2.     println(it) // 打印: 0、1、2、3
  3. }
  4. 4.7.times {
  5.     println(it) // 打印: 0、1、2、3
  6. }
复制代码
​    说明:Groovy 中的 times 函数与 Kotlin 中的 repeat 函数有些类似。
2.2.2 浮点类型

​    1)浮点类型变量
类型大小(位)符号位(S)/                         阶码(E)/                         尾数(M)最小值/                         最大值/                         最小正数有效位数案例float321S + 8E + 23M-3.4028235E38                         3.4028235E38                         1.4E-456float a = 1.0                         def a = 1.0F                         def a = 1.0fdouble641S + 11E + 52M-1.7976931348623157E308                         1.7976931348623157E308                         4.9E-32415double a= 1.0                         def a = 1.0D                         def a = 1.0dBigDecimal————————BigDecimal a = 3.14                         def a = new BigDecimal('3.14')                         def a = 3.14G                         def a = 3.14g​    浮点数编码原理详见 → 浮点数编码原理。
​    2)浮点数科学计数法
  1. double a = 1e2 // 100.0
  2. double a = 2E1 // 20.0
  3. double a = 2e+3 // 2000.0
  4. double a = 3E-2 // 0.03
复制代码
2.2.3 运算符

运算符描述作用域优先级案例+加法整数/浮点数作为一元运算符时,优先级为1                         作为二元运算符时,优先级为31 + 2 ⇒ 3-减法整数/浮点数作为一元运算符时,优先级为1                         作为二元运算符时,优先级为31 - 2 ⇒ -1*乘法整数/浮点数22 * 3 ⇒ 6/整除/除法整数/浮点数23 / 2 ⇒ 1                         3.0 / 2 ⇒ 1.5                         3 / 2.0 ⇒ 1.5%取余整数/浮点数27 % 3 ⇒ 1++加1整数/浮点数1a++(先使用, 后加1)                         ++a(先加1, 后使用)--减1整数/浮点数1a--(先使用, 后减1)                         --a(先减1, 后使用)=赋值所有类型9a = 1+=加赋值整数/浮点数9a += 1 ⇔ a = a + 1-=减赋值整数/浮点数9a -= 2 ⇔ a = a - 2*=乘赋值整数/浮点数9a *= 3 ⇔ a = a * 3/=除赋值整数/浮点数9a /= 4 ⇔ a = a / 4%=取余赋值整数/浮点数9a %= 5⇔ a = a % 52.3 布尔类型

2.3.1 布尔类型

类型大小(位)取值案例boolean1true / falseboolean a = true                         def a = false                         boolean a = 100 // true                         boolean a = -100 // true                         boolean a = 0 // false2.3.2 运算符

[table][tr]运算符描述作用域优先级案例[/tr][tr][td]==[/td][td]等于[/td][td]整数/布尔/字符[/td][td]1[/td][td]1 == 2 // false                         1 == 1 // true[/td][/tr][tr][td]!=[/td][td]不等于[/td][td]整数/布尔/字符[/td][td]1[/td][td]1 != 2 // true                         1 != 1 // false[/td][/tr][tr][td]</tdtd小于/tdtd整数/浮点数/字符/tdtd1/tdtd1 < 2 // true/td/trtrtd>[/td][td]大于[/td][td]整数/浮点数/字符[/td][td]1[/td][td]1 > 2 // false[/td][/tr][tr][td]= 2 // false[/td][/tr][tr][td]in[/td][td]在范围内[/td][td]整数/字符[/td][td]1[/td][td]3 in 1..9 // true                         9 in 1..

相关推荐

您需要登录后才可以回帖 登录 | 立即注册