變量和函數(shù)

  • 可以使用下劃線來(lái)增強(qiáng)可讀性(Kotlin1.1版本開(kāi)始支持)

    val oneMillion = 1_000_000
    val creditCardNumber = 1234_5678_9012_3456L
    val socialSecurityNumber = 999_99_9999L
    val hexBytes = 0xFF_EC_DE_5E
    val bytes = 0b11010010_01101001_10010100_10010010
    
  • 數(shù)組
    關(guān)鍵字Array琉朽,創(chuàng)建數(shù)組毒租,使用arrayOf:

    //使用arrayOf簡(jiǎn)單創(chuàng)建數(shù)組
    var students: Array<String> = arrayOf("Clock", "D_clock", "技術(shù)視界")
    var studentNums = arrayOf(1, 2, 3)
    使用arrayOfNulls可以創(chuàng)建一個(gè)指定長(zhǎng)度,元素內(nèi)容為空的數(shù)組
    
    //創(chuàng)一個(gè)長(zhǎng)度為10漓骚,元素內(nèi)容皆為null的數(shù)組
    var emptyArray = arrayOfNulls<String>(10)
    

    Kotlin對(duì)一些基礎(chǔ)類型定義數(shù)組會(huì)有拆裝箱的開(kāi)銷蝌衔,所以也可以使用自身封裝好的一些API進(jìn)行創(chuàng)建數(shù)組,以降低開(kāi)銷:

    //創(chuàng)建一個(gè)int數(shù)組蝌蹂,避免封箱裝箱操作
    var intArray = intArrayOf(1, 2, 3)
    

    Kotlin數(shù)組還支持使用閉包進(jìn)行初始化噩斟,就像下面這樣:

    //使用閉包初始化一個(gè)Array<String>,數(shù)組內(nèi)容為["0", "1", "4", "9", "16"]
    var asc = Array(5, { i -> (i * i).toString() })
    
  • 字符串
    關(guān)鍵字String:

    var useString: String = "I am a boy"
    var firstChar: Char = useString[0] //相當(dāng)于Java的String.charAt(0)
    

    Kotlin的同樣支持字符串模板孤个,但是相比Java的String.format要簡(jiǎn)潔很多剃允。比如:

    var nickname: String = "D_clock愛(ài)吃蔥花"
    println("my nickname is $nickname")//輸出昵稱
    println("nickname length: ${nickname.length}")//輸出昵稱的長(zhǎng)度
    
  • 定義函數(shù)
    Kotlin定義一個(gè)函數(shù)的風(fēng)格大致如下

    訪問(wèn)控制符 fun 方法名(參數(shù),參數(shù),參數(shù)) : 返回值類型{
     ...
     ...
    }
    
    • 訪問(wèn)控制符:與Java有點(diǎn)差異,Kotlin的訪問(wèn)范圍從大到小分別是public齐鲤、internal斥废、protected、private给郊,不聲明默認(rèn)是public牡肉;
    • 返回值類型:不需要返回類型的函數(shù),后面的: 返回值類型可以缺氏拧(這里可以看到無(wú)論是變量還是方法统锤,Kotlin都喜歡名字在前,類型在后)炭庙;

    Kotlin支持包級(jí)函數(shù)饲窿,即函數(shù)不依賴于類而存在:

    package lesson1
    fun main(args: Array<String>) {
       println("Kotlin")
    }
    
  • 參數(shù)變長(zhǎng)
    Kotlin的參數(shù)變長(zhǎng),傳遞的參數(shù)使用關(guān)鍵字vararg標(biāo)明即可

    /***Kotlin版代碼***/
    fun displayActors(vararg name: String) {
        println("actors: " + name);
    }
    /***Java版代碼***/
    public void displayActors(String... name) {
        System.out.println("actors :" + name);
    }
    
  • 靜態(tài)變量和函數(shù)
    Kotlin沒(méi)有Java中的static概念焕蹄,如果在Kotlin中需要像Java一樣定義靜態(tài)變量和函數(shù)可以使用companion object逾雄,companion object后可以加上自定義的object名,也可以省略。

    // 定義
    class KotlinStatic {
       companion object Test {
           var kotlinInt: Int = 0
           fun getInstance(): KotlinStatic {
               return KotlinStatic()
           }
        }
    }
    // 使用
    KotlinStatic.kotlinInt
    KotlinStatic.getInstance()
    

    在Kotlin中鸦泳,如果真的想要實(shí)現(xiàn)和Java中的static變量或函數(shù)银锻,官方更推薦使用包級(jí)別的變量或函數(shù)來(lái)實(shí)現(xiàn)。

  • For循環(huán)
    for循環(huán)能夠?qū)θ魏翁峁┑鳎╥terator)的對(duì)象進(jìn)行遍歷

    fun useFor() {
       val students: Array<String> = arrayOf("java", "kotlin", "go")
       for (student in students) {//輸出學(xué)生名字
           println("student: $student")
       }
       for ((index, student) in students.withIndex()) {//輸出學(xué)生的下標(biāo)和名字
           println("the element at $index is $student")
       }
    }
    
  • 返回和跳轉(zhuǎn)
    continue做鹰、break徒仓、return三種跳轉(zhuǎn)都支持跳轉(zhuǎn)到指定的標(biāo)簽處,使用@在對(duì)應(yīng)的循環(huán)或者匿名函數(shù)做標(biāo)記即可:

    fun useJump() {
        val numbers = arrayOf(1, 2, 3, 4, 5)
        val numbers2 = arrayOf(1, 3, 5, 7, 9)
        //設(shè)置testLab標(biāo)簽名
        testLab@ for (num in numbers) {
            println("num: $num")
            for (num2 in numbers2) {
                if (num == 3) {
                   break@testLab//直接中斷標(biāo)簽指定的整個(gè)循環(huán)
                }
            }
        }
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末誊垢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子症见,更是在濱河造成了極大的恐慌喂走,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谋作,死亡現(xiàn)場(chǎng)離奇詭異芋肠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)遵蚜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門帖池,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吭净,你說(shuō)我怎么就攤上這事睡汹。” “怎么了寂殉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵囚巴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我友扰,道長(zhǎng)彤叉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任村怪,我火速辦了婚禮秽浇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甚负。我一直安慰自己柬焕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布腊敲。 她就那樣靜靜地躺著击喂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碰辅。 梳的紋絲不亂的頭發(fā)上懂昂,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音没宾,去河邊找鬼凌彬。 笑死沸柔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铲敛。 我是一名探鬼主播褐澎,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伐蒋!你這毒婦竟也來(lái)了工三?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤先鱼,失蹤者是張志新(化名)和其女友劉穎俭正,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體焙畔,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掸读,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宏多。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儿惫。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伸但,靈堂內(nèi)的尸體忽然破棺而出肾请,到底是詐尸還是另有隱情,我是刑警寧澤砌烁,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布筐喳,位于F島的核電站,受9級(jí)特大地震影響函喉,放射性物質(zhì)發(fā)生泄漏避归。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一管呵、第九天 我趴在偏房一處隱蔽的房頂上張望梳毙。 院中可真熱鬧,春花似錦捐下、人聲如沸账锹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奸柬。三九已至,卻和暖如春婴程,著一層夾襖步出監(jiān)牢的瞬間廓奕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桌粉,地道東北人蒸绩。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铃肯,于是被迫代替她去往敵國(guó)和親患亿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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