Groovy語(yǔ)法基礎(chǔ)一

一心肪、簡(jiǎn)介

? ? ? ? 我們都知道:Groovy 語(yǔ)法與Java 語(yǔ)言的語(yǔ)法很相似锭亏,雖然 Groovy 的語(yǔ)法源于SmallTalk和Ruby這類(lèi)語(yǔ)言的理念,但是可以將它想像成 Java 語(yǔ)言的一種更加簡(jiǎn)單硬鞍、表達(dá)能力更強(qiáng)的變體慧瘤。語(yǔ)法類(lèi)似于Java,大大簡(jiǎn)化了Android開(kāi)發(fā)人員的學(xué)習(xí)時(shí)間膳凝,該文章主要記錄自己作為Java開(kāi)發(fā)人員來(lái)學(xué)習(xí)Groovy語(yǔ)法碑隆。

二、語(yǔ)法集合

1蹬音、關(guān)鍵字

??????? 關(guān)鍵字是編程語(yǔ)言的漢語(yǔ)拼音的AOE和英語(yǔ)的ABC,下面列出groovy關(guān)鍵字:

關(guān)鍵字

2上煤、注釋

注釋主要有單行注釋、多行注釋著淆、文檔注釋劫狠。分別如下所示:

//這是單行注釋

/**

*這是多行注釋

*/

/**

*這是文檔注釋

*@paramotherPerson

*@return

*/

String start(String args) {

"Hello${args}"

}

??????? 其中文檔注釋的主要作用是:

? ? ? ? a、type definitions (classes, interfaces, enums, annotations):類(lèi)型定義(類(lèi)永部、接口独泞、枚舉、注解)

?? ? ?? b苔埋、fields and properties definitions:成員變量及屬性定義

? ? ? ? c懦砂、methods definitions:方法定義

3、標(biāo)識(shí)符

??????? 標(biāo)識(shí)符分為普通標(biāo)識(shí)符组橄、引用標(biāo)識(shí)符荞膘。

? ? ? ? a、普通標(biāo)識(shí)符:標(biāo)識(shí)符第一個(gè)字符可以是字母玉工、美元符號(hào)或者下劃線(xiàn)羽资,但是不能是數(shù)字。后面可以跟隨字母和數(shù)字遵班。下面看合法標(biāo)識(shí)符和非法標(biāo)識(shí)符:

//合法標(biāo)識(shí)符

def firstIdentifier;

def $secondIdentifier;

def _thirdIdentifier;

以及:

/**

*非法標(biāo)識(shí)符

*/

def 1firstIllegalIdenfier;

def second&Illegal*Identifier;

? ? b屠升、引用標(biāo)識(shí)符:將標(biāo)識(shí)符放在單引號(hào)潮改、多引號(hào)或者某些特殊字符(成對(duì)出現(xiàn)時(shí))中,可以被當(dāng)作引用標(biāo)識(shí)符:

/*單引號(hào)和多引號(hào)引用標(biāo)識(shí)符*/

def map=[:]

map."an identifier with a space and double quotes"="ALLOWED"

map.'with-dash-signs-and-single-quotes'="ALLOWED"

assert map."an identifier with a space and double quotes"=="ALLOWED"

assertmap.'with-dash-signs-and-single-quotes'=="ALLOWED"

以及

//特殊字符成對(duì)出現(xiàn)時(shí)的引用標(biāo)識(shí)符

map.'single quote'

map."double quote"

map.'''triple single quote'''

map."""triple double quote"""

map./slash string/

map.$/dollar slash string/$

4腹暖、字符串

??????? 字符串可以使用單引號(hào)'或雙引號(hào)"包括起來(lái)汇在。有幾種字符串:

a、普通字符串

/**

*普通字符串微服,類(lèi)似于Java字符串

*/

def str1 ="1234"

def str2 ='1234'

b禀横、多行字符串

/**

*多行字符串纵顾,有三個(gè)單引號(hào)或者多引號(hào)構(gòu)成厢钧,輸出時(shí)行數(shù)不變

*/

defstr3 ='''

line1

line2

line3

'''

注意:不論是單行還是多行字符串衫仑, 都可以使用反斜杠轉(zhuǎn)義字符偎窘。例如:

println? 'an escaped single quote:\'needs a backslash'

結(jié)果是:

an escaped single quote: ' needs a backslash

c固惯、內(nèi)插字符串:編譯器會(huì)把美元和花括號(hào)中的內(nèi)容替換成實(shí)際的值洲守,內(nèi)插字符串中還可以進(jìn)行表達(dá)式計(jì)算涡驮。

/**

*內(nèi)插字符串

*/

def name ='Groovy !'//普通字符串

def greeting ="Hello${name}"http://內(nèi)插字符串

println greeting/*打印結(jié)果:Hello Groovy !*/

當(dāng)內(nèi)插字符串可以由前后的符號(hào)區(qū)分出的時(shí)候魄缚,花括號(hào)可以省略宝与。

/**

*定義對(duì)象

*/

def person = [name:'lizihanglove',age:23]

//當(dāng)內(nèi)插字符串可以由前后的符號(hào)區(qū)分出的時(shí)候,花括號(hào)可以省略冶匹。

println "$person.name is $person.age years old!"

注意:當(dāng)使用內(nèi)插字符串的時(shí)候习劫,字符串字面值是Groovy的字符串類(lèi)型GString。這一點(diǎn)需要注意嚼隘。普通的Java字符串是不變的诽里,而GString是可變的。另外它們的哈希值也不同飞蛹。因此在使用Map等數(shù)據(jù)類(lèi)型的時(shí)候需要格外注意谤狡,避免使用GString作為Map的鍵。還有單引號(hào)及三個(gè)單引號(hào)是不能使用插值字符串的卧檐,下面是一些規(guī)則


字符串規(guī)則

??????? 上面列表中:

??????? interpolated表示是否支持插值墓懂,multiline表示是否支持多行,escape character表示轉(zhuǎn)義字符轉(zhuǎn)化時(shí)字符霉囚,如:

println? "line1\'line2"??????????????????????? //雙引號(hào)轉(zhuǎn)義字符用\

def str4 =$/ line1$/$ line2 /$?????????? //$/.../$字符串轉(zhuǎn)義結(jié)束符?$用$轉(zhuǎn)義

println str4????????????????????????????????????? //結(jié)果line1 /$ line2


下接 Groovy語(yǔ)法基礎(chǔ)二?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捕仔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盈罐,更是在濱河造成了極大的恐慌榜跌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暖呕,死亡現(xiàn)場(chǎng)離奇詭異斜做,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)湾揽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)瓤逼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笼吟,“玉大人,你說(shuō)我怎么就攤上這事霸旗〈铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵诱告,是天一觀的道長(zhǎng)撵枢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)精居,這世上最難降的妖魔是什么锄禽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮靴姿,結(jié)果婚禮上沃但,老公的妹妹穿的比我還像新娘。我一直安慰自己佛吓,他們只是感情好宵晚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著维雇,像睡著了一般淤刃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吱型,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天逸贾,我揣著相機(jī)與錄音,去河邊找鬼唁影。 笑死耕陷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的据沈。 我是一名探鬼主播哟沫,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锌介!你這毒婦竟也來(lái)了嗜诀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤孔祸,失蹤者是張志新(化名)和其女友劉穎隆敢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體崔慧,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拂蝎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惶室。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片温自。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡玄货,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悼泌,到底是詐尸還是另有隱情松捉,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布馆里,位于F島的核電站隘世,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸠踪。R本人自食惡果不足惜丙者,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慢哈。 院中可真熱鬧蔓钟,春花似錦永票、人聲如沸卵贱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)键俱。三九已至,卻和暖如春世分,著一層夾襖步出監(jiān)牢的瞬間编振,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工臭埋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踪央,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓瓢阴,卻偏偏與公主長(zhǎng)得像畅蹂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荣恐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理液斜,服務(wù)發(fā)現(xiàn),斷路器叠穆,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • //Clojure入門(mén)教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 3,665評(píng)論 0 7
  • Groovy是一門(mén)基于JVM的動(dòng)態(tài)語(yǔ)言少漆,很多語(yǔ)法和Java類(lèi)似。大部分Java代碼也同時(shí)是合法的Groovy代碼硼被。...
    樂(lè)百川閱讀 3,590評(píng)論 0 15
  • 官方文檔 注釋?zhuān)–omments) 和Java一樣示损,支持單行(使用//)、多行(/* */)和文檔注釋?zhuān)ㄊ褂?**...
    yjiyjige閱讀 29,866評(píng)論 2 27
  • 晚飯嚷硫,蒸紅薯就著油炸花生米检访。一顆兩顆從碟子里夾起夺溢,放進(jìn)嘴巴,咸香味彌漫開(kāi)來(lái)烛谊。突然想起童年趣事來(lái)风响,說(shuō)與老公分享,卻一...
    錢(qián)毛閱讀 394評(píng)論 0 1