Java & Groovy & Scala & Kotlin - 08.基本語法

Overview

本節(jié)介紹四種語言的最基本的語法形式泪电,包含注釋,操作符府树,相等性等讨阻。

共通篇

注釋

四種語言都支持以下三種注釋

//  單行注釋
/*
    多行注釋
 */
/**
 * JavaDoc
 */

Java 篇

操作符

Java 中的操作符支持四則運(yùn)算,賦值(=)聚蝶,運(yùn)算后賦值(+=)杰妓,遞增遞減(++, --),三元操作符(?true:false)碘勉,邏輯操作符巷挥,關(guān)系操作符等。

調(diào)用方法

語法

方法名(參數(shù)列表)

add(1, 2)

相等性

Java 使用 == 表示基本數(shù)據(jù)類型的值相等和引用數(shù)據(jù)類型的地址相等验靡;用方法 equals() 表示引用類型的內(nèi)容相同倍宾。Java 的內(nèi)置類都實(shí)現(xiàn)了自己的 equals() 方法,如果是自己建立的類則要重寫 equals() 方法胜嗓。

Date x = new Date(100);
Date y = new Date(100);

System.out.println("x==y: " + (x == y));    //  false
System.out.println("x.equals(y): " + x.equals(y));  //  true

Groovy 篇

操作符

包含 Java 的所有操作符之外高职,Groovy 還多了一個(gè)貓王操作符 ?:,該操作符是三元操作符的語法糖辞州。

String agentStatus = "Active"

//  三元操作符
String statusTernary = (agentStatus !=null && !"".equals(agentStatus)) ? "Active" : "Inactive"

//  貓王操作符
String statusElvis = agentStatus ?: "Inactive"

在使用貓王操作符時(shí) Groovy 會(huì)自動(dòng)將左邊的表達(dá)式向布爾值進(jìn)行轉(zhuǎn)換怔锌。轉(zhuǎn)換規(guī)則為:所有邏輯上的空值都會(huì)被認(rèn)為是 false,比如 null变过,空字符串埃元,空數(shù)組等,除此之外的都是 true牵啦。

調(diào)用方法

語法基本同 Java亚情,但是在 Groovy 中如果方法的參數(shù)個(gè)數(shù)只有一個(gè)時(shí),可以省略包裹在參數(shù)列表上的小括號(hào)哈雏,方法名和參數(shù)間留一個(gè)空格

println("Hello World")
// 省略小括號(hào)
println "Hello World"

相等性

Groovy 認(rèn)為比較內(nèi)容的使用場(chǎng)合要遠(yuǎn)遠(yuǎn)大于比較引用楞件,所以 Groovy 中的 == 默認(rèn)就是調(diào)用 equals() 方法。

println("x==y: " + (x == y))    //  true
println("x.equals(y): " + x.equals(y))  //  true

另外 Groovy 在比較時(shí)對(duì)空指針做了判斷裳瘪,所以等號(hào)左邊即使是空值也不會(huì)引發(fā)空指針異常土浸。

println(null == 10) //  false

如果你希望調(diào)用 Java 版本的 == 進(jìn)行引用的比較,可以調(diào)用 is() 方法彭羹。

println("x.is(y): " + x.is(y))  //  false

Scala 篇

操作符

Scala 中一切皆對(duì)象黄伊,所有的操作符都是對(duì)應(yīng)方法的語法糖。即 1 + 2 實(shí)際上就是 調(diào)用 1.+(2) 的語法糖派殷,其中 + 既是操作符也是方法名还最。像這種位于兩個(gè)操作數(shù)之間的操作符被稱為中綴操作符墓阀,Scala 中中綴操作符在使用時(shí)可以被省略,所以 1.+(2) 可以簡(jiǎn)寫成 1 + 2拓轻。

Scala 支持 Java 中除了遞增斯撮,遞減之外的所有操作符,所以在 Scala 中不能使用 i++ 這樣的語句扶叉,而需要使用 i += 1 來實(shí)現(xiàn)同樣的功能勿锅。

調(diào)用方法

同 Groovy,只有一個(gè)參數(shù)時(shí)可以省略括號(hào)枣氧,在方法名和參數(shù)間加一個(gè)空格

相等性

同 Groovy 一樣溢十,== 調(diào)用的是 equals() 方法。 不同的是 Groovy 比較引用用的是 is()达吞,而 Scala 則是 eq()张弛,也就是說只是方法名不一致。

println("x.eq(y): " + x.eq(y)) //  false

Kotlin 篇

操作符

基本上同 Groovy宗挥,也擁有貓王操作符

調(diào)用方法

同 Java 一樣乌庶,很久以前的版本也支持去掉小括號(hào)种蝶,不過這一特性早已被移除契耿。

相等性

和 Groovy,Scala 一樣螃征,== 也是調(diào)用 equals()搪桂,而比較引用使用的是 ===(類似 Javascript),這三種語言同一個(gè)功能不同方法名也真是夠了盯滚。

println("x===y : " + (x === y)) //  false

Summary

  • 除了 Scala 之外踢械,其它語言都支持一元操作符 ++--
  • Groovy 和 Kotlin 都支持貓王操作符
  • 除了 Java 之外魄藕,其它語言中 == 調(diào)用的都是 equals()内列,比較引用則使用其它的方法,且三種語言的方法名都不一致

文章源碼見 https://github.com/SidneyXu/JGSK 倉庫的 _08_grammar 小節(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末背率,一起剝皮案震驚了整個(gè)濱河市话瞧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寝姿,老刑警劉巖交排,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異饵筑,居然都是意外死亡埃篓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門根资,熙熙樓的掌柜王于貴愁眉苦臉地迎上來架专,“玉大人同窘,你說我怎么就攤上這事〔拷牛” “怎么了塞椎?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睛低。 經(jīng)常有香客問我案狠,道長,這世上最難降的妖魔是什么钱雷? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任骂铁,我火速辦了婚禮,結(jié)果婚禮上罩抗,老公的妹妹穿的比我還像新娘拉庵。我一直安慰自己,他們只是感情好套蒂,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布钞支。 她就那樣靜靜地躺著,像睡著了一般操刀。 火紅的嫁衣襯著肌膚如雪烁挟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天骨坑,我揣著相機(jī)與錄音撼嗓,去河邊找鬼。 笑死欢唾,一個(gè)胖子當(dāng)著我的面吹牛且警,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播礁遣,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼斑芜,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了祟霍?” 一聲冷哼從身側(cè)響起杏头,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浅碾,沒想到半個(gè)月后大州,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垂谢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年厦画,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡根暑,死狀恐怖力试,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情排嫌,我是刑警寧澤畸裳,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站淳地,受9級(jí)特大地震影響怖糊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颇象,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一伍伤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遣钳,春花似錦扰魂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至倦淀,卻和暖如春蒋畜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晃听。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工百侧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砰识,地道東北人能扒。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像辫狼,于是被迫代替她去往敵國和親初斑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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

  • 前言 人生苦多膨处,快來 Kotlin 见秤,快速學(xué)習(xí)Kotlin! 什么是Kotlin真椿? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,217評(píng)論 9 118
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法鹃答,類相關(guān)的語法,內(nèi)部類的語法突硝,繼承相關(guān)的語法测摔,異常的語法,線程的語...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)锋八,斷路器浙于,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • 這個(gè)小長假我約著童年的小伙伴們?nèi)チ藦B門羞酗,也許是因?yàn)榍岸螘r(shí)間工作太忙了,我迫不及待地想出去走走紊服。 接到我的邀約檀轨,米粒...
    西西里的絨小魚閱讀 518評(píng)論 8 4
  • 可能是我每次見紋身師傅靖哥都給他帶一罐茶葉吧 他見我也異常熱情 在補(bǔ)色的一個(gè)小時(shí)里 我們倆像兩個(gè)長舌婦一樣把家長里...
    AI大叔閱讀 197評(píng)論 0 0