Kotlin語法入門

包:
源文件聲明通常以包開頭
沒有指明包, 改文件的內(nèi)容屬于無名的默認包

默認導(dǎo)入:
會有多個包被默認導(dǎo)入到kotlin文件中
還會根據(jù)平臺不同再導(dǎo)入一些:
jvm:
java.lang.*
kotlin.jvm.*

導(dǎo)包:
如果包的名字出現(xiàn)沖突, 可以使用as關(guān)鍵詞取別名進行區(qū)分

import foo.Bar
import bar.Bar as bBar  //bBar即代表bar.Bar

函數(shù)聲明:

  //fun開頭, 兩個int參數(shù), 返回值也為int
    fun add(a: Int, b: Int): Int {
        return a + b
    }
//表達式作為函數(shù)體, 返回值類型自己推斷
    fun add2(a: Int, b: Int) = a+ b

變量:
val修飾的是只讀的變量, var修飾的是可變的變量

    fun test(){
        val b: Int = 2  //聲明變量類型并賦值
        val a = 10      //賦值, 變量類型由值進行推斷
        val c: Int      //聲明時沒有賦值,必須聲明變量類型
        c = 3           //明確賦值
    }

原始字符串有"""進行分割, 可以包含換行符等特殊字符,

fun main(args: Array<String>) {
    val rawString = """
fun helloWorld(val name : String) {
   println("Hello, world!")
}
"""
    println(rawString)

}

字符中可以使用字符串模板, 使用美元符號$開始:

        var a = 1
        val s1 = "a is $a"
        a = 2
        val  s2 = "${s1.replace("is","was")} , but now is $a"
        Log.e("lily",s2)
輸出結(jié)果: a was 1 , but now is 2

使用條件表達式 if:

//        if (a > b) {
//            return a
//        } else {
//            return b
//        }

上面等同于:
        return if (a > b) a else b

在 if 表達式作為代碼塊時, 代碼塊最后一行的值作為表達式的結(jié)果,

var min = if(a >b ){
    print(a)
    b
}else{
    print(b)
    a
}

在 kotlin 中沒有像 java 中這樣true? 0 : 1的三元表達式, 可使用if...else...代替

可空值null檢測:
當(dāng)一個變量可以為null值的時候, 必須在聲明值得類型后面加一個?來表示該聲明該值可以為空

    fun parseInt(str: String): Int?{
        return str.toIntOrNull();
    }

直接x * y會報錯, 因為x和y可能為空, 所以要先進行判空才可以

     var x = parseInt("3")
       var y = parseInt("4")
       if (x != null && y != null){
           print(x * y)        
       }

類型檢測及自動類型轉(zhuǎn)化 is

1.
        if(obj is String){
          //obj是String類型, 滿足條件obj就會自動轉(zhuǎn)換成String類型的, 不需要顯示轉(zhuǎn)換
            val length = obj.length
        }
        
2. 
      //滿足&&左邊的條件的, 右邊的obj會自動轉(zhuǎn)換成String
        if (obj is String && obj.length > 3){
            
        }

3.         
        if (obj !is String){
            return
        }
      //obj在這一個分支會自動轉(zhuǎn)換成String
        val length = obj.length

For循環(huán)

1. 循環(huán)項
        var ss = listOf<String>("aa","bb","cc","dd")
        for (item in ss){
            Log.e("lilt",item)
        }
2. 循環(huán)角標
        for (index in ss.indices){
            if (index == 2){
                Log.e("lily",ss[index])
            }
        }

When 相當(dāng)于java的switch
when既可以作為語句也可以作為表達式
作為表達式時必須有else語句, 表達式的值即為when的最后一條語句的表達式結(jié)果

        val m = when(obj){
            1 -> "one"
            "hello" -> "hello"
            is Long -> "is long"
            !is String -> "not String"
            else -> "unkonwn"
        }
        Log.e("lily", m)

in使用區(qū)間

//判斷是否在這個數(shù)字區(qū)間內(nèi)
   if(any in 1..2){
            Log.e("lily","${any} is in range")
        }else{
            Log.e("lily","${any} is not in range")
        }
輸出: x is in range

//區(qū)間迭代  
        for (any in 1..10 step 2){
            Log.e("lily","zaiqujian")
        }
輸出: zaiqujian * 10次

//數(shù)列迭代 (以步長為2 進行迭代)
        for (any in 1..10 step 2){
            Log.e("lily","zaiqujian")
        }
輸出:zaiqujian * 5次
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末突委,一起剝皮案震驚了整個濱河市魄咕,隨后出現(xiàn)的幾起案子胜榔,更是在濱河造成了極大的恐慌框冀,老刑警劉巖焚刚,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機旬迹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來求类,“玉大人奔垦,你說我怎么就攤上這事∈” “怎么了椿猎?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寿弱。 經(jīng)常有香客問我犯眠,道長,這世上最難降的妖魔是什么症革? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任阔逼,我火速辦了婚禮,結(jié)果婚禮上地沮,老公的妹妹穿的比我還像新娘嗜浮。我一直安慰自己,他們只是感情好摩疑,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布危融。 她就那樣靜靜地躺著,像睡著了一般雷袋。 火紅的嫁衣襯著肌膚如雪吉殃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天楷怒,我揣著相機與錄音蛋勺,去河邊找鬼。 笑死鸠删,一個胖子當(dāng)著我的面吹牛抱完,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刃泡,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巧娱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烘贴?” 一聲冷哼從身側(cè)響起禁添,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桨踪,沒想到半個月后老翘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡锻离,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年铺峭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纳账。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡逛薇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疏虫,到底是詐尸還是另有隱情永罚,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布卧秘,位于F島的核電站呢袱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏翅敌。R本人自食惡果不足惜羞福,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚯涮。 院中可真熱鬧治专,春花似錦卖陵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喘批,卻和暖如春撩荣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饶深。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工餐曹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敌厘。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓台猴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親额湘。 傳聞我的和親對象是個殘疾皇子卿吐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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