學(xué)習(xí)koltin小筆記(Kotlin程序開發(fā)入門精要)

by hzwusibo

demo :??GitHub - qq373036876/koltinDemo: koltin 樣例 1守伸、 koltin 基礎(chǔ)知識 2、koltin 類與接口 3糊识、數(shù)據(jù)類 4、泛型 5鸯隅、高階函數(shù)與Lambda表達(dá)式


一巨朦、開發(fā)環(huán)境搭建

A? Kotiln的編譯目標(biāo)是多元的,Java是一元的赶撰,Koltin不僅能編譯成JVM byte code舌镶,還可以編譯成JavaScript,還能作為腳本運(yùn)行(無需編譯)(要轉(zhuǎn)JavaScript 在編譯器豪娜,選Kotion(JavaScript)餐胀,只使用Kotlin原生的API, KotKin(JVM)既可以使用原生API也可以使用JDK API 瘤载,無法轉(zhuǎn)換成JavaScript)

二否灾、基礎(chǔ)知識

B? Kotlin 不支持short 隱形轉(zhuǎn)int ,如果要相互轉(zhuǎn)換? toInt() 講 short轉(zhuǎn)為int (其他幾個類似? tobyte() , toLong()? )

Java:

short? value? = 20鸣奔;

int m = value墨技;

Koltin:

val value:Short = 20 ;? ? ( 寫法有點(diǎn)類似于 uml的類圖表示方法? ? ? val常量,只讀溃蔫,類似final健提、 var變量,讀寫)?

var m =value.toInt();?

C Koltin 數(shù)值可以用? _? 分開寫 比如123456 能寫成 12_3456 伟叛,也能寫出123_4_56

D Kotlin中沒用Java三元操作符私痹, switch語句用when代替(不需要每個后面break), when與if一樣,既可以作為語句也能作為表達(dá)式紊遵,如果是表達(dá)式账千,每個分支最后一個表達(dá)式就是when 或者if表達(dá)式的返回值。(When暗膜,支持多個分支執(zhí)行相同代碼匀奏,支持使用 in (表示在這個范圍內(nèi)),支持分支條件是函數(shù) )

三学搜、類與接口

E? 如果是主構(gòu)造函數(shù)娃善,需要在init塊中初始化。 在init塊中可以直接使用主構(gòu)造器的參數(shù)瑞佩。 如果類中聲明了主構(gòu)造器聚磺,那么第二構(gòu)造器都需要直接或者間接的調(diào)用主構(gòu)造器。

F? Koltin不支持靜態(tài)方法與成員炬丸,由于Koltin支持全局函數(shù)和變量瘫寝,因此可以使用全局函數(shù)和變量來代替(用objects技術(shù))

G Koltin函數(shù)支持默認(rèn)參數(shù) (JVM不支持,是Koltin的表面支持)稠炬, 帶默認(rèn)參數(shù)的必須是最后幾個參數(shù)焕阿,如果某個參數(shù)帶默認(rèn)值,后面的參數(shù)都必須帶默認(rèn)值首启。(支持參數(shù)命名參數(shù)傳遞參數(shù)值 ,? 支持可變參數(shù)? vararg )

H Koltin中? private暮屡、protected、public闽坡、 internal(任何模塊都能訪問栽惶、類似于static )

I? 默認(rèn)的class不能被繼承, 需要顯示的聲明open才能(重寫方法疾嗅,需要在父類方法前加open 關(guān)鍵字外厂,且 要在子類重寫方法前加override關(guān)鍵字, 重寫屬性類似代承,不過需要注意的是 val屬性可以被重寫為var屬性汁蝶,反過來不可以)

J koltin允許接口包含默認(rèn)方法體,對于有方法體的接口方法论悴,并不要求一定要重寫改方法掖棉。(抽象類類似,不過不需要要聲明open)

小結(jié): Koltin類與接口 與java并沒有本質(zhì)區(qū)別膀估,只是為了體現(xiàn)差異幔亥,加了一些語法糖,到底好不好察纯,還需要時間證明

補(bǔ)充:

1 koltin中 set和get 有個小知識點(diǎn) backing field帕棉, Java沒有這樣的概念针肥,剛一看還挺難理解的。

其實(shí)香伴,應(yīng)該使用backing field 慰枕, 否則會死循環(huán)

注意: 在這個位置打印Log也是不能寫city的(看了半天沒找到原因 )

backing field是什么 https://www.jishux.com/p/228468f108ac1bf4

四、枚舉

五即纲、數(shù)據(jù)類和封閉類

A. 數(shù)據(jù)類其實(shí)就是 寫很少代碼koltin自動生成余下代碼

使用數(shù)據(jù)類:


B. 編寫數(shù)據(jù)類:主構(gòu)造器至少要一個參數(shù)具帮、 參數(shù)必須標(biāo)記為val 或者 var 、數(shù)據(jù)類不能是抽象類

低斋、open類蜂厅、封閉類 或者 內(nèi)部類。


C. 如果需要復(fù)制一個對象膊畴,然后修改其中一部分屬性葛峻,可以使用copy函數(shù)。

D.數(shù)據(jù)解構(gòu):也就是解除解構(gòu)(將數(shù)據(jù)的屬性提取出來巴比,分別賦予單個變量)

E 封閉類 可以理解為枚舉的拓展,前面用sealed標(biāo)識礁遵,可以有任意多的子類或者對象轻绞,且只能是這些子類與對象

六 泛型

F. Koltin 泛型沒有提供通配符,用out和in關(guān)鍵字佣耐,out聲明泛型的占位符只能在獲取泛型類型值的地方政勃,如函數(shù)的返回,in聲明的泛型占位符只能在設(shè)置泛型類型值的地方兼砖,如函數(shù)參數(shù)奸远。

G. 與java Array相同

與java Array相同

H? ? 星號投射

七、對象和委托

A. Koltin中不是匿名類讽挟,而是對象懒叛, 建立一個對象,需要使用object關(guān)鍵字耽梅,該對象要繼承的類需要與object之間用冒號:分割

B.? 匿名對象只能用在本地或者private聲明中薛窥,如果將匿名對象用于public函數(shù)返回值,或 public屬性的類型眼姐,

那么會返回對象的父類型诅迷,如果沒實(shí)現(xiàn)任何接口或者繼承任何類返回any? ? ?

C. 在Java中,匿名對象訪問封閉作用域內(nèi)放入變量众旗,需要用final聲明改變量罢杉。在Koltin中可以任意訪問與修改

D.Koltin中沒有靜態(tài)成員的概念,用陪伴對象解決贡歧,使用companion關(guān)鍵字聲明

陪伴對象中定義的成員是可以直接通過類名訪問的

=

(雖然看起來像類的靜態(tài)成員滩租,但在允許期間赋秀,這些成員任然是真實(shí)對象的實(shí)例成員,他與靜態(tài)成員是不同的持际,不過使用@JvmStatic進(jìn)行注解沃琅,Koltin編譯器將會其編譯成byte code真正的靜態(tài)方法)

八、高階函數(shù)與Lambda

A. 高階函數(shù)簡單的說就是 一個函數(shù)作為方法的參數(shù)


B蜘欲、 // Lambda表達(dá)式 Lambda表達(dá)式益眉,或者稱為匿名函數(shù)

? ? // 也就是一 個沒有聲明的函數(shù),但是可以作為表達(dá)式傳遞出去

//? ? max(strings , { a , b - > a.length < b.length }) 等價于 如下代碼

? ? fun compare(a: String, b: String): Boolean = a.length < b.length

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姥份,一起剝皮案震驚了整個濱河市郭脂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澈歉,老刑警劉巖展鸡,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異埃难,居然都是意外死亡莹弊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門涡尘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忍弛,“玉大人,你說我怎么就攤上這事考抄∠妇危” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵川梅,是天一觀的道長疯兼。 經(jīng)常有香客問我,道長贫途,這世上最難降的妖魔是什么吧彪? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮潮饱,結(jié)果婚禮上来氧,老公的妹妹穿的比我還像新娘。我一直安慰自己香拉,他們只是感情好啦扬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凫碌,像睡著了一般扑毡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盛险,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天瞄摊,我揣著相機(jī)與錄音勋又,去河邊找鬼。 笑死换帜,一個胖子當(dāng)著我的面吹牛楔壤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惯驼,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蹲嚣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祟牲?” 一聲冷哼從身側(cè)響起隙畜,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎说贝,沒想到半個月后议惰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乡恕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年言询,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傲宜。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡倍试,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛋哭,到底是詐尸還是另有隱情,我是刑警寧澤涮母,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布谆趾,位于F島的核電站,受9級特大地震影響叛本,放射性物質(zhì)發(fā)生泄漏沪蓬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一来候、第九天 我趴在偏房一處隱蔽的房頂上張望跷叉。 院中可真熱鬧,春花似錦营搅、人聲如沸云挟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽园欣。三九已至,卻和暖如春休蟹,著一層夾襖步出監(jiān)牢的瞬間沸枯,已是汗流浹背日矫。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绑榴,地道東北人哪轿。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像翔怎,于是被迫代替她去往敵國和親窃诉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

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