Kotlin 入門(mén)學(xué)習(xí)教程總結(jié)

簡(jiǎn)介:

最近公司開(kāi)展了一個(gè)新項(xiàng)目,自己考量了一下決定用kotlin來(lái)寫(xiě).那么分享一下我的學(xué)習(xí)歷程,希望對(duì)您有所幫助
  • implementation "org.jetbrains.anko:anko:0.10.8" anko是使用kt語(yǔ)言來(lái)編寫(xiě)的一個(gè)android增強(qiáng)庫(kù),封裝了很多東西,使我們的操作更加簡(jiǎn)化.
  • kt有自動(dòng)映射功能,xml寫(xiě)了id,直接可以在kt中使用,無(wú)需findViewByid,直接把控件id當(dāng)作對(duì)象使用即可.

數(shù)據(jù)類(lèi)型

A:數(shù)據(jù)類(lèi)型跟java一樣(寫(xiě)法不一樣)分別都有:
Int Long Folat Double Boolean Char String
轉(zhuǎn)換的話--> i.toInt...其他方法一樣
B:數(shù)組(數(shù)組其實(shí)也是大同小異,只不過(guò)String的時(shí)候有一些區(qū)別)
IntArray LongArray FolatArray DoubleArray BooleanArray CharArray
使用: var long:LongArray =longArrayOf(1,2,3)
使用StringArray: var string:Array<String> = arrayOf("哈","哈","大","笑")
C:集合的話跟Java都一些不一樣:kt分為只讀跟可變,就跟val跟var一樣(前面是只讀,后面是可變)
Set MutableSet List MutableList Map MutableMap
使用: var list:MutableList = listOf("1","2","3","4")
Map使用有一些不一樣 (2種方式初始化,個(gè)人喜歡第一種,簡(jiǎn)單清晰)

val mapList: Map<String, String> = mapOf(Pair("1", "王濤"), Pair("2", "王飛"), Pair("3", "王偉"))`
`val mapList1: Map<String, String> = mapOf("1" to "王濤", "2" to "王飛", "3" to "王偉")

D:循環(huán): for-in forEach 迭代器遍歷(非常不喜歡)

  for (item in mapList) {
               string = "內(nèi)容: ${item.key} --- ${item.value}"
               toast(string)
           }
           mapList.forEach { key, value ->
                string = "${string} 大家:${key} -- ${value}"
      }

控制語(yǔ)句

A:條件分支:if-else基本沒(méi)改動(dòng) swtich defult 改成 when else

     tv.text = if(a == 1){"a 等等于 1"} else {"a 不等于 1"}
               tv.text = when(t.text){
                  "1" -> "2"
                  "2" -> "3"
                  else ->"成功了"
               }

B:等式判斷: kt中String判斷也可以使用 == .還有一種方式是 === 三個(gè)等號(hào),自己去研究一下,是跟clone有關(guān)
C:is 和 in: instanceof == is (校驗(yàn)變量是否為某種類(lèi)型)
in:java 中沒(méi)有這個(gè)東西,他是判斷數(shù)組或者集合中,存不存在此參數(shù) (變量名 in 數(shù)組名)

D:條件循環(huán): 比如從20-100循環(huán)偶數(shù) 恐怕之前的循環(huán)就做不到了.所以這邊有條件循環(huán)

for(i in 10 until 22){ 這是10-20 包括10 但是不包括20} 
for(i in 20 downTo 10) { 循環(huán)遞減 從20遞減到10 其中20跟10都包括}
for(i in 10 .. 20 step 2){每次循環(huán)遞增2,其中包括10跟20,可以把..改成until,這樣就只包括10}

E:跳出多層循環(huán): outside@ while(){....break@outside} outside可以隨便起名字 重要的是@符號(hào)

 fun ss() {
        var i = 1
        outSide@  while (i<100000){
            if (i == 50){
                break@outSide
            }
        }
    }

F:swtich去掉了,改成了when,寫(xiě)法如下

      when (10) {
            1 -> 0
            2 -> 1
            else -> 2
        }

函數(shù)的基本用法

  • A:Java中使用@Override 表示改函數(shù)重載父類(lèi)的方法,kt使用小寫(xiě)的 override 在同一行表達(dá)重載操作
  • B:Java中使用 public 表示該函數(shù)是公公方法,kt默認(rèn)函數(shù)是公開(kāi),所以省略了public(省略不代表沒(méi)有)
  • C:Java中使用 void 表示改函數(shù)沒(méi)有返回參數(shù),kt不存在關(guān)鍵字 void(這個(gè)是沒(méi)有)
  • D:kt新增fun,類(lèi)似于Java中的class
  • E:Java的參數(shù)格式是:(變量類(lèi)型 變量名稱(chēng) 舉例:String str) kt(變量名稱(chēng):變量類(lèi)型 舉例:str:String)
  • F:kt引入了空安全機(jī)制,如果某個(gè)變量允許為空,就需要在變量類(lèi)型后面加個(gè)? val string: String? = "123"
       over fun onCreate(...)
            fun getText(str:String,age:Int):String{
                    return string
            }   
       //這樣就不用全部傳入了 只需要傳入age
            fun getText(age:String,str: String = "王濤", inte: Int = 2): String {
                    return "$str 第 $inte 次進(jìn)入"
            }

可變參數(shù)

  • Java中是(String... args) kt中是(vararg args:String)
            fun getVarText(vararg other: String): String {
                var str = ""
                return str
            }

泛型函數(shù)

  • 上面都說(shuō)傳入基本類(lèi)型的比如(int,String,Double...),在開(kāi)中傳入集合,數(shù)組等也是很有必要的
      fun <T> getListVararg(vararg other: T): String {
                var str = ""
                for (item in other) {
                    str = "$str 哈嘍- $item \n"
                }
                return str
            }

內(nèi)聯(lián)函數(shù)
-必須這么寫(xiě),將<T>改為<reified T:Number>,同時(shí)必須在fun前面添加關(guān)鍵字inline 他跟上面的泛型函數(shù)的區(qū)別是,不支持多個(gè),并且可以返回 T 類(lèi)型

        //這是Map
             inline fun <reified T : String> getTextMap(other: Map<T, T>): String {
                var str = ""
                for (item in other) {
                    str = "$str 哈嘍- ${item.key} -- ${item.value} \n"
                }
                return str
            }
            //這是List (返回list<T> 范型函數(shù)沒(méi)辦法返回List<T>)
            inline fun <reified T : String> getTextList(other: List<T>): List<T> {
                return other
            }

簡(jiǎn)化函數(shù)

  • 我認(rèn)為他就是一個(gè)遞增循環(huán)(自己調(diào)用自己),適合54321這種方式來(lái)用簡(jiǎn)化函數(shù)
        //如果n==1, 輸出的結(jié)果就是 5*4*3*2*1的結(jié)果
        fun factorial(n:Int):Int = if(n<1)n else n*factorial(n-1) 

同步j(luò)ava

在方法后面加入 @JvmOverloads constructor 這段代碼 他就會(huì)給我去自動(dòng)的同步j(luò)ava
companion object {} == static 同時(shí){}里面可以方靜態(tài)方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顷歌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泣崩,更是在濱河造成了極大的恐慌颗圣,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篮撑,死亡現(xiàn)場(chǎng)離奇詭異减细,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)赢笨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)未蝌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驮吱,“玉大人,你說(shuō)我怎么就攤上這事萧吠∽蠖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵纸型,是天一觀的道長(zhǎng)拇砰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)狰腌,這世上最難降的妖魔是什么除破? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮琼腔,結(jié)果婚禮上瑰枫,老公的妹妹穿的比我還像新娘。我一直安慰自己丹莲,他們只是感情好光坝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甥材,像睡著了一般盯另。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洲赵,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天土铺,我揣著相機(jī)與錄音,去河邊找鬼板鬓。 笑死悲敷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俭令。 我是一名探鬼主播后德,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抄腔!你這毒婦竟也來(lái)了瓢湃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赫蛇,失蹤者是張志新(化名)和其女友劉穎绵患,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體悟耘,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡落蝙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筏勒。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡移迫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出管行,到底是詐尸還是另有隱情厨埋,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布捐顷,位于F島的核電站荡陷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迅涮。R本人自食惡果不足惜废赞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逗柴。 院中可真熱鬧蛹头,春花似錦顿肺、人聲如沸戏溺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旷祸。三九已至,卻和暖如春讼昆,著一層夾襖步出監(jiān)牢的瞬間托享,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工浸赫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闰围,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓既峡,卻偏偏與公主長(zhǎng)得像羡榴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子运敢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 前言 人生苦多校仑,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin传惠! 什么是Kotlin迄沫? Kotlin 是種靜態(tài)類(lèi)型編程...
    任半生囂狂閱讀 26,209評(píng)論 9 118
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫(xiě)文章卦方,發(fā)現(xiàn)簡(jiǎn)書(shū)還為我保存起的...
    Jenaral閱讀 2,756評(píng)論 2 9
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line)羊瘩,也就是一...
    悟名先生閱讀 4,149評(píng)論 0 13
  • Google在今年的IO大會(huì)上宣布,將Android開(kāi)發(fā)的官方語(yǔ)言更換為Kotlin,作為跟著Google玩兒An...
    藍(lán)灰_q閱讀 76,869評(píng)論 31 489
  • 又來(lái)了困后,令人不快的眼神和嘴角的笑意: “你連這個(gè)都不知道?” 我的視線停留在他臉上乐纸,語(yǔ)氣陡然冷下來(lái):“各自喜歡...
    bikkkke閱讀 232評(píng)論 0 0