groovy 语法之变量
本文前提:已经熟悉kotlin语法和java语法。
变量
没有基本类型变量,只有对象(封装)类型变量,虽然我们可以像java中那样定义变量,但即使我们用基本类型变量关键字来定义变量,结果也会是封装类型变量,例如int定义会变成Integer类型,这点我们可以打印变量的类来验证:
执行:
int a = 1;
println a.class
我们可以得到如下结果:
class java.lang.Integer
强类型变量定义类似java,若类型变量定义使用def关键字,定义方式类似kotlin的 val a = 0
之类的,与kotlin的区别是def定义的变量类型可动态发生改变,例如:
def a = 1;
println a.class
a = 1.1
println a.class
可以得到如下结果
class java.lang.Integer
class java.math.BigDecimal
由此我们可以验证def关键字定义的变量类型会随着赋值不同而自动发生改变,这与某些弱类型的语言的变量几乎是一样的,最起码从表面上看是这样。
字符串类型变量
字符串类型变量除了类似kotlin字符串模板、有格式的字符串、反斜杠转义之外,还可以直接使用单引号定义字符串,这点与kotlin和java都不相同
我们还可以直接使用[]
来拿到字符串某个索引下标的字符内容,以及某个范围的字符串,例如
def a = "abcdef"
println a[0]
println a[5]
println a[1..3]
结果如下:
a
f
bcd
字符串比较
这里除了直接用compareTo方法之外,我们还可以使用比较运算符 >, <, ==
来做比较,这是因为groovy作了运算符重载,java不能这么用,然而kotlin我们也可以自己编写类似的运算符重载,只不过kotlin官方没有给我们提供(大小于没有,等于运算有)。
def a = "abc", b = "abd"
println a>b
println a<b
println a==b
结果如下:
false
true
false
可以看到大小比较是按字典顺序的比较
变量大致就这样。