Kotlin學(xué)習(xí)筆記(一)---從零學(xué)習(xí)Kotlin

關(guān)于Kotlin

Android開發(fā)目前火到不行的語言,17年IO大會推出Android官方開發(fā)語言陈惰,相信每個人都或多或少有了解,關(guān)于Kotlin的起源以及作用毕籽,不用再闡述抬闯,已經(jīng)有有心人整理好了

有了這幾篇文章,其實已經(jīng)能對Kotlin有個初步了解关筒,所以溶握,我們就直接進(jìn)入Kotlin的學(xué)習(xí)之路,而不是浪費時間去了解各種看花眼的概念蒸播,在學(xué)習(xí)中去了解睡榆,邊學(xué)變敲,效果最佳

學(xué)習(xí)Kotlin

  • 配置Kotlin開發(fā)環(huán)境
    學(xué)習(xí)之前袍榆,肯定需要碼農(nóng)干活的基本工具—IDE胀屿,Kotlin官方推出的開發(fā)工具,就是IntelliJ IDEA包雀,Androidstudio不正是基于IntelliJ IDEA開發(fā)的么宿崭,So?
    Androidstudio已經(jīng)支持了Kotlin才写,簡單了
    開始配置:Androidstudio--File--Settings--Plugins--Browse Repositories葡兑,搜索Kotlin奴愉,安裝,成功之后重啟AndroidStudio
    查看Kotlin是否安裝成功铁孵,在main--java包下锭硼,右鍵New,會出現(xiàn)Kotlin選項蜕劝,如下圖
    Paste_Image.png

    先創(chuàng)建一個Kotlin類型的Class檀头,例如New--Kotlin File/Class,新建一個Kotlin類岖沛,命名testKotlin暑始,可以看到后綴為.kt
  • 學(xué)習(xí)基礎(chǔ)
    Kotlin 提供了如下的內(nèi)置類型來表示數(shù)字
Type Bit width
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

而字符型在Kotlin中是一個單獨的數(shù)據(jù)類型

  • 聲明屬性
    可以使用var或者val來聲明屬性
    val:可讀不可寫,也就是只有g(shù)et()婴削,沒有set()
    var: 可變廊镜,既有set(),也有g(shù)et()
    聲明方式和Java不同唉俗,默認(rèn)寫法:數(shù)據(jù)類型在變量名后面嗤朴,中間加上:
    val a1: Int = 1  // 立即賦值  ,默認(rèn)寫法
    val b1 = 2   // 自動推斷出 Int類型 虫溜,簡寫
    var time = 5
    var name :String = "喜洋洋"     //Kotlin默認(rèn)不需要雹姊;加上也不會報錯```
- 顯式轉(zhuǎn)換
由于不同的表示方式,較小類型并不是較大類型的子類型衡楞。
例如:
    val b1: Byte = 5
    val b2: Int = b1 //會報錯誤```

因此較小的類型不能隱式轉(zhuǎn)換為較大的類型吱雏。 這意味著在不進(jìn)行顯式轉(zhuǎn)換的情況下我們不能把 Byte 型值賦給一個 Int 變量。
只有通過顯式轉(zhuǎn)換才行:

        val b1: Byte = 5
        val b2: Int = b1.toInt()   //正確```
每個數(shù)字類型支持如下的轉(zhuǎn)換:

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char```
如果沒有顯式轉(zhuǎn)換瘾境,可以通過算術(shù)運算做適當(dāng)轉(zhuǎn)換歧杏,例如:

        val b1: Byte = 5
        val b2: Int = b1.toInt()
        val b3 = 100L + b2  // Long + Int => Long```
- 字符
字符用 Char 類型表示。不能直接當(dāng)作數(shù)字使用

fun check(c1: Char) {
if (c1 == 1) { // 錯誤:類型不兼容
// ……
}
}字符字面值用單引號括起來: '1'迷守。 特殊字符可以用反斜杠轉(zhuǎn)義犬绒。 支持這幾個轉(zhuǎn)義序列:\t\b盒犹、\n懂更、\r' 急膀、" 沮协、\\ \$```。
例如卓嫂,把字符串轉(zhuǎn)為Int數(shù)字:

        val c1 :Char = '4'
        val c2 = c1.toInt()```
- 布爾
布爾用 ``Boolean`` 類型表示慷暂,它有兩個值:true 和 false。
內(nèi)置的布爾運算有:
    || – 短路邏輯或
    && – 短路邏輯與
    ! - 邏輯非```
  • 數(shù)組
    數(shù)組在 Kotlin 中使用 Array 類來表示,它定義了 get 和 set 函數(shù)行瑞;
    1.我們可以使用庫函數(shù) arrayOf() 來創(chuàng)建一個數(shù)組并傳遞元素值給它奸腺,例如:
    val d1 = arrayOf("a", "b", "c")   //創(chuàng)建一個長度為3的數(shù)組```
2.或者使用庫函數(shù) arrayOfNulls() 可以用于創(chuàng)建一個指定大小、元素都為空的數(shù)組:
val d2 = arrayOfNulls<Int>(6)```

3.用接受數(shù)組大小和一個函數(shù)參數(shù)的工廠函數(shù)血久,用作參數(shù)的函數(shù)能夠返回給定索引的每個元素初始值:

    // 創(chuàng)建一個 Array<String> 初始化為 ["0", "2","4", "6", "8"]
    val d3 = Array(5, { i -> (i * 2).toString() })```
**注意**: 與 Java 不同的是突照,Kotlin 中數(shù)組是不型變的(invariant)。這意味著 Kotlin 不讓我們把 Array<String> 賦值給 Array<Any>氧吐,以防止可能的運行時失敗.

  Kotlin 也有無裝箱開銷的專門的類來表示原生類型數(shù)組: ```ByteArray```讹蘑、 ```ShortArray```、```IntArray```等等筑舅。這些類和 Array 并沒有繼承關(guān)系座慰,但是它們有同樣的方法屬性集。它們也都有相應(yīng)的工廠方法:
    val array1 = intArrayOf(5, 6, 7)```
  • 字符串
    字符串用 String 類型表示翠拣。字符串是不可變的版仔。 字符串的元素——字符可以使用索引運算符訪問: s[i]。 可以用 for 循環(huán)迭代字符串:
      for (e in str) {
          println(e)
      }```
Kotlin 有兩種類型的字符串字面值: 轉(zhuǎn)義字符串可以有轉(zhuǎn)義字符误墓,以及原生字符串可以包含換行和任意文本蛮粮。轉(zhuǎn)義字符串很像 Java 字符串:
    val e1 = "Hello, world!\n"```

原生字符串 使用三個引號(""")分界符括起來,內(nèi)部沒有轉(zhuǎn)義并且可以包含換行和任何其他字符:

    val e2 = """for (c in "foo")
        print(c)"""```
- 字符串模板
1.字符串可以包含模板表達(dá)式 优烧,即一些小段代碼蝉揍,會求值并把結(jié)果合并到字符串中。 模板表達(dá)式以美元符($)開頭畦娄,由一個簡單的名字構(gòu)成:
val f1 = 5
val f2 = "f1 = $f1"  求值結(jié)果為 "f1 = 5"```

2.或者用花括號擴起來的任意表達(dá)式:

    val f3 = "hello"
    val f4 = "$f3.length = ${f3.length}"  //求值結(jié)果為 "f3.length  = 5"```
3.原生字符串和轉(zhuǎn)義字符串內(nèi)部都支持模板。 如果你需要在原生字符串中表示字面值 $ 字符(它不支持反斜杠轉(zhuǎn)義)弊仪,你可以用下列語法:
val price = """
${'$'}9.99
"""```

后記

Kotlin基礎(chǔ)熙卡,學(xué)習(xí)了
數(shù)據(jù)類型、聲明屬性励饵、顯式轉(zhuǎn)換驳癌、字符、布爾役听、字符串颓鲜、字符串模板。
熟悉基礎(chǔ)典予,繼續(xù)前行甜滨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瘤袖,隨后出現(xiàn)的幾起案子衣摩,更是在濱河造成了極大的恐慌,老刑警劉巖捂敌,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艾扮,死亡現(xiàn)場離奇詭異既琴,居然都是意外死亡,警方通過查閱死者的電腦和手機泡嘴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門甫恩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酌予,你說我怎么就攤上這事∝仓” “怎么了耸成?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵妈嘹,是天一觀的道長翁垂。 經(jīng)常有香客問我,道長提佣,這世上最難降的妖魔是什么荒叼? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮广凸,結(jié)果婚禮上阅茶,老公的妹妹穿的比我還像新娘。我一直安慰自己谅海,他們只是感情好脸哀,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扭吁,像睡著了一般撞蜂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侥袜,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天蝌诡,我揣著相機與錄音,去河邊找鬼枫吧。 笑死浦旱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的九杂。 我是一名探鬼主播颁湖,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼例隆!你這毒婦竟也來了甥捺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤裳擎,失蹤者是張志新(化名)和其女友劉穎涎永,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡羡微,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年谷饿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妈倔。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡博投,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盯蝴,到底是詐尸還是另有隱情毅哗,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布捧挺,位于F島的核電站虑绵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闽烙。R本人自食惡果不足惜翅睛,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黑竞。 院中可真熱鬧捕发,春花似錦、人聲如沸很魂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遏匆。三九已至法挨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幅聘,已是汗流浹背坷剧。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喊暖,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓撕瞧,卻偏偏與公主長得像陵叽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丛版,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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