Kotlin學(xué)習(xí)

kotlin基礎(chǔ)

kotlin入口及函數(shù)定義

函數(shù)定義使用關(guān)鍵字 fun友绝,參數(shù)格式為:參數(shù) : 類型

fun sum(a: Int, b: Int): Int {   // Int 參數(shù)沧卢,返回值 Int
    return a + b
}

表達(dá)式作為函數(shù)體铸鹰,返回類型自動(dòng)推斷

fun sum(a: Int, b: Int) = a + b

public fun sum(a: Int, b: Int): Int = a + b   // public 方法則必須明確寫出返回類型

無返回值的函數(shù)(類似Java中的void):

fun printSum(a: Int, b: Int): Unit { 
    print(a + b)
}

// 如果是返回 Unit類型具温,則可以省略(對(duì)于public方法也是這樣):
public fun printSum(a: Int, b: Int) { 
    print(a + b)
}

函數(shù)的變長參數(shù)可以用 vararg 關(guān)鍵字進(jìn)行標(biāo)識(shí)(類似與Java的...)

fun vars(vararg v:Int){
    for(vt in v){
        print(vt)
    }
}

kotlin的入口函數(shù)

fun main() {
    println("---main---")
}

kotlin數(shù)據(jù)類型

1岭佳、Number類型

kotlin有6中基本數(shù)值類型怪瓶,包括 Byte歪今、Short嚎幸、Int、Long彤委、Float鞭铆、Double 等。不同于 Java 的是焦影,字符不屬于數(shù)值類型车遂,是一個(gè)獨(dú)立的數(shù)據(jù)類型。

var aLong: Long = 123L
var aInt: Int = 1234567890
var aShort: Short = 12345

var aFloat: Float = 23F
var aDouble: Double = 23.0

var aByte: Byte = 127
類型 位寬
Byte 8
Short 16
Int 32
Long 64
Float 32
Double 64

基本類型的裝箱與拆箱
Kotlin 不再區(qū)分裝箱與非裝箱類型斯辰,在需要的時(shí)候編譯器會(huì)幫我們自動(dòng)的選擇是使用基本類型還是裝箱類型舶担。

2、Boolean類型

布爾類型有兩個(gè)值: true 和 false 彬呻,和數(shù)值類型一樣衣陶,在必要的時(shí)候會(huì)進(jìn)行裝箱

var isFirst: Boolean = true
var isSecond: Boolean = false

3、Char類型

占兩個(gè)字節(jié)闸氮,用‘’引起來表示一個(gè)Unicode 字符
不同于Java剪况,char不是一個(gè)數(shù)值類型,無法自動(dòng)提升為int型等數(shù)值類型

var aChar: Char = '靠'
var nChar: Char = '他'
var bChar: Char = '靈'

4蒲跨、String類型

大體上使用和Java一樣译断,用“”引起來,表示“一串”char
差異1:字符串比較
kotin的==相當(dāng)于是Java的equals或悲,表示比較內(nèi)容孙咪;
kotin的===相當(dāng)于是Java的==,表示比較內(nèi)存地址巡语。

var aName: String = "Kotlin"
var bName: String = "Kotlin"

println(aName == bName) // true
println(aName === bName)// false

差異2:字符串比較
在Kotlin中翎蹈,String是可以包含字符串模版的,具體使用就是在${}的大括號(hào)內(nèi)是可以執(zhí)行代碼的男公。

var a: Int = 1
var b: Int = 2
println("$a + $b = ${a + b}")

5荤堪、數(shù)組類型

5.1、數(shù)組創(chuàng)建

方法1:使用arrayOf()方法創(chuàng)建數(shù)組

val a = arrayOf(1, 2, 3)

方法2:創(chuàng)建指定長度,所有元素為空的數(shù)組

val a = arrayOfNulls<Int>(3)

方法3:動(dòng)態(tài)創(chuàng)建數(shù)組

// 創(chuàng)建一個(gè) Array 初始化為 ["0", "1", "4", "9", "16"] 
val asc = Array(5) { i -> (i * i).toString() }

5.2逞力、原生類型數(shù)組

Kotlin 中數(shù)組是不型變的(invariant)曙寡。這意味著 Kotlin 不讓我們把 Array 賦值給 Array,以防止可能的運(yùn)行時(shí)失敗寇荧。

class Array private constructor() { 
    val size: 
    Int operator fun get(index: Int): T 
    operator fun set(index: Int, value: T): Unit
    operator fun iterator(): Iterator 
    // …… 
}

由于kotlin的Array需要傳遞范型举庶,為了避免裝箱拆箱的操作,kotlin還有還有ByteArray, ShortArray, IntArray揩抡,用來表示各個(gè)類型的數(shù)組户侥,其用法同Array一樣

val arrayOfInt: IntArray = intArrayOf(1, 2, 3)
val arrayOfChar: CharArray = charArrayOf('中', '國')

5.3、數(shù)組遍歷

val array = arrayOf(1, 2, 3)
for (item in array) { println(item) }

// 帶索引遍歷數(shù)組
for (i in array.indices) { 
    println(i.toString() + "->" + array[i]) 
}

// 遍歷元素(帶索引)
for ((index, item) in array.withIndex()) {
    println("$index->$item")
}

// forRach遍歷元素
array.forEach { println(it) }

// forRach增強(qiáng)版(帶索引)
array.forEachIndexed { index, item ->
    println("$index:$item") 
}

kotlin使用技巧

tips1: java項(xiàng)目添加kotlin支持
原有的Java項(xiàng)目快速進(jìn)行對(duì)Kotlin的支持

kotlin_tips1.png

tips2: Java文件轉(zhuǎn)化為kotlin
新入坑的小伙伴可以借助該功能快速學(xué)習(xí)Java代碼該如何用Kotlin覆寫

kotlin_tips2.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峦嗤,一起剝皮案震驚了整個(gè)濱河市蕊唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烁设,老刑警劉巖替梨,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異装黑,居然都是意外死亡副瀑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門恋谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糠睡,“玉大人,你說我怎么就攤上這事疚颊”房祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵材义,是天一觀的道長均抽。 經(jīng)常有香客問我,道長其掂,這世上最難降的妖魔是什么油挥? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮清寇,結(jié)果婚禮上喘漏,老公的妹妹穿的比我還像新娘护蝶。我一直安慰自己华烟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布持灰。 她就那樣靜靜地躺著盔夜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喂链,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天返十,我揣著相機(jī)與錄音,去河邊找鬼椭微。 笑死洞坑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝇率。 我是一名探鬼主播迟杂,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼本慕!你這毒婦竟也來了排拷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤锅尘,失蹤者是張志新(化名)和其女友劉穎监氢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藤违,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浪腐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纺弊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牛欢。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淆游,靈堂內(nèi)的尸體忽然破棺而出傍睹,到底是詐尸還是另有隱情,我是刑警寧澤犹菱,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布拾稳,位于F島的核電站,受9級(jí)特大地震影響腊脱,放射性物質(zhì)發(fā)生泄漏访得。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一陕凹、第九天 我趴在偏房一處隱蔽的房頂上張望悍抑。 院中可真熱鬧,春花似錦杜耙、人聲如沸搜骡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽记靡。三九已至谈竿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摸吠,已是汗流浹背空凸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寸痢,地道東北人呀洲。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像啼止,于是被迫代替她去往敵國和親两嘴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355