天天看點

《Groovy語言規範》-文法(二)5.數字

除了通常的帶引号字元串,groovy提供斜杠字元串,使用/作為分隔符。斜杠字元串對于定義正規表達式和模式是特别有用的,因為不需要轉義反斜杠。

一個斜杠字元串:

隻有正斜杠需要反斜杠轉義:

斜杠字元串是多行的:

斜杠字元串也能被插值(如,gstring):

有幾個陷阱需要注意:

一個空的斜杠字元串不能使用雙正斜杠表示,因為它被groovy解析器作為一個單行注釋了解。這就是為什麼以下斷言實際上無法編譯,因為它看起來像一個無終止的語句:

美元符斜杠字元串是一個有開口$/和閉口$/界定的多行gstring。這轉義字元是美元符,它能轉義另一個美元符,或一個正斜杠。但是雙美元符和雙正斜杠不用被轉義,除了轉義像gstring占位符序列開始的字元串子序列的美元符,或者你需要轉義一個序列,開頭看着像閉包美元符斜杠字元串分隔符。

示例:

與java不同,groovy沒有顯式的字元文本,然而你可以通過三種不同方式,可以将groovy字元串實際作為一個字元使用。

(1)當定義變量時,通過指定char類型,使變量包含字元

(2)通過as操作符使用類型強制轉換

(3)通過char操作符做類型轉換

第一個選項是(1)有趣的當一個字元在一個變量中,而另外兩個(2和3)是更令人關注時char值必須作為一個方法調用的參數。

groovy支援不同類型的整數和小數,通常以java的number類型傳回。

整數類型與java相同:

byte

char

short

int

long

java.lang.biginteger

你能以如下定義建立這些類型的整數:

如果你通過使用def關鍵字使用可選類型,那麼整數的類型将是可變的:它取決于這個類型實際包含的值。

對于正數:

對于負數也一樣:

二進制數

在java6及以前和groovy一樣,數字隻能使用十進制,八進制和十六進制表示,使用java7和groovy2你能使用0b字首作為一個二進制符号:

八進制數

八進制數使用0後面跟八進制數的典型格式表示。

十六進制數

十六進制數使用0x後面跟十六進制數的典型格式表示。

小數類型與java一樣:

float

double

java.lang.bigdecimal

你能采用如下定義方式建立這些類型的數字:

小數能使用指數,使用e或e指數字母,緊跟着一個可選符号,且有一個整數表示指數:

為了精确的進行小數計算,groovy選擇java.lang.bigdecimal作為小數類型。此外,float和double也被支援,但要求有一個顯式類型定義,類型轉換或字尾。即使bigdecimal是預設的小數,攜帶float或double作為類型參數的方法或閉包也可以接受這些數值。

小數不能使用二進制,八進制和十六進制表示。

當寫一個很長的數字,使用眼睛很難弄清楚有多少數字組合在一起,例如使用千,單詞等組合。通過允許你在數字中添加一些下劃線,更容易發現這些組合: