1. 程式人生 > 實用技巧 >Groovy In Action 筆記 (3)

Groovy In Action 筆記 (3)

Groovy中所有型別均為引用型別。即使是Java中的8種Primitive Type,groovy中背後使用的都是對應的包裝類。沒有boxing,unboxing操作.

一下為一些基本型別操作

//Integer
def age = 10

println("age++ " + (age++)) // age++ 10, 先輸出,再自增
assert age == 11

println("++age " + (++age)) // ++age 12,先自增,再輸出

assert age == 12

assert 12.toString() == age.toString() // 可直接對常量使用方法
assert
12.8.toInteger() == 12 // 可直接對常量使用方法 //float def weight_f = 1.2f def weight_F = 1.2F assert weight_f.class.name == Float.name assert weight_F.class.name == Float.name //double def weight_d = 1.2d def weight_D = 1.2D assert weight_d.class.name == Double.name assert weight_D.class.name == Double.name //long
def meter_l = 1000L assert meter_l.class.name == Long.name //bigInteger def universe_age_g = 1000G assert universe_age_g.class.name == BigInteger.name //bigDecimal def decimal_default = 1.2 ///注意預設為 bigDecimal型別,和Java不同 def decimal_b= 1.2g assert decimal_default.class.name == BigDecimal.name assert decimal_b.class
.name == BigDecimal.name // operators def compare_a = 20 def compare_b = 10 assert compare_a > compare_b assert compare_b < compare_a assert (compare_a <=> compare_b) == 1 // <=> 相當於 compareTo函式 assert 5 / 2 == 2.5 //預設bigDecimal assert 3 % 2 == 1 //取餘數 a.mod(b) assert 5.intdiv(2) == 2 //整除 assert compare_a >> 2 == 5 //右移兩位,相當於除以4 assert compare_a << 2 == 80 //左移兩位,相當於乘以4 //動態資料型別變化 --- Groovy中所有型別均為 引用型別。 即使是Java中的8種Primitive Type,groovy中背後使用的都是對應的包裝類。沒有boxing,unboxing操作 def type_variant = 100 assert type_variant.class.name == Integer.name type_variant = 100f assert type_variant.class.name == Float.name type_variant = 100d assert type_variant.class.name == Double.name type_variant = "STRING" assert type_variant.class.name == String.name