前言:17年的時候第一次接觸了kotlin拍嵌,中途斷斷續(xù)續(xù)地用著。今年來到新公司循诉,剛好項目中有大量的kotlin代碼横辆,雖然對kotlin的用法有一定了解,但是要在組內(nèi)進行分享茄猫,所以想借此機會對kotlin的知識點進行整理狈蚤,加深印象,方便后續(xù)查看划纽。
一脆侮、基本類型
1、整數(shù)
??kotlin中共提供了四種整數(shù)類型勇劣,分別為Byte靖避、Short潭枣、Int和Long。
類型 | 大小 | 最小值 | 最大值 |
---|---|---|---|
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 | 2,147,483,647 |
Long | 64 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
??定義變量時幻捏,如果初始化值沒有超過Int類型的最大值盆犁,則會自動推斷為Int型。如果超過則推斷為Long型篡九,如果要顯式定義為Long型谐岁,則在末尾加上“L”即可。
2榛臼、浮點數(shù)
??kotlin中的浮點數(shù)由Float和Double兩種類型組成伊佃。
類型 | 大小 | 有效數(shù)字比特數(shù) | 指數(shù)比特數(shù) | 十進制位數(shù) |
---|---|---|---|---|
Float | 32 | 24 | 8 | 6-7 |
Double | 64 | 53 | 11 | 15-16 |
??當給一個變量設置初始化值為小數(shù)時,默認是Double類型沛善,如果要使它為Float類型锭魔,則需要在末尾加上“f”或“F”后綴。
3路呜、顯式轉(zhuǎn)換
??在kotlin中是不支持較小的類型不能隱式轉(zhuǎn)換為較大的類型迷捧。
var a: Int = 2
var b: Long = a //這樣會報錯
var b: Long = a.toLong() //這樣寫才正確,必須用顯式轉(zhuǎn)換
每個數(shù)字類型支持如下的轉(zhuǎn)換:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
4胀葱、字符串
??kotlin中字符串用String類型表示漠秋,與java一樣字符串是不可變的。我們可以用索引運算符來訪問:s[i]抵屿,也可以用for循環(huán)對其進行遍歷庆锦。
for (c in str) {
println(c)
}
??平時我們可以用“+”操作符來連接字符串與其他類型值,但是要求表達式的第一個元素是字符串轧葛,否則就會報錯搂抒。
var str = 1 + "打印" //報錯
var str = "打印" + 1 //正確
??當然除了上面這種方法外,kotlin還支持字符串模板尿扯,即字符串字面值可以包含模板表達式 求晶,會求值并把結果合并到字符串中。 模板表達式以美元符($)開頭衷笋。
var a: Int = 2
var str = "打印a = $a" / /輸出結果:“打印a = 2”
或
var str = "打印a = ${a + a}" / /輸出結果:“打印a = 4” //用“{}”花括號括起來的表達式
如果想輸出一個原始字符串芳杏,即保留字符串原來格式的,用三個引號(""")括起來
var str = """
我是一個粉刷匠
粉刷能力強
"""
print(str) //輸出結果:我是一個粉刷匠
粉刷能力強
二辟宗、變量
val : 定義只讀局部變量爵赵,只能進行一次賦值
val a: Int = 3 //直接賦值,不賦值會報錯
或
val a = 3 //賦值后可省略類型泊脐,不賦值會報錯
總結:首次定義必須賦值
???????????參數(shù)類型可以省略
???????????后續(xù)無法再次賦值
var :可多次賦值變量
var a: Int = 1 //必須賦值空幻,參數(shù)類型可省略
a = 5 //可多次賦值
總結:首次定義必須賦值
???????????參數(shù)類型可以省略
???????????后續(xù)可以再次賦值
三、函數(shù)
(1)函數(shù)定義方式
fun sum(a: Int, b: Int, c: Int): Int {
return a + b + c
} //帶返回值的
fun sum(a: Int, b: Int, c: Int): Unit {
print(a + b + c)
} //不帶返回值的,Unit 是一種只有一個值——Unit 的類型,這個值不需要顯式返回,可以省略
(2)帶默認參數(shù)的函數(shù)
??在kotlin中可以在定義函數(shù)時容客,設置默認參數(shù)秕铛,即給參數(shù)賦一個默認值则剃,后續(xù)調(diào)用方法時如果沒有傳這個參數(shù)的值,那么這個參數(shù)的值還是原來設置的默認值如捅。
//例如
fun sum(a: Int, b: Int = 6, c: Int): Int {
return a + b + c
}
fun main(args: Array<String>) {
print(sum(2, c = 4)) //輸出結果:12棍现,即 2+6+4
}
注意點:當一個函數(shù)調(diào)用混用位置參數(shù)與命名參數(shù)時,所有位置參數(shù)都要放在第一個命名參數(shù)之前镜遣。這里所說的位置參數(shù)指的就是可以直接給值的類似上面的a己肮,命名參數(shù)是”參數(shù)名=值“形式,類似c悲关。舉個栗子:print(sum(2, c = 4))這樣寫是ok的谎僻,2是a的值,b不賦值用默認值寓辱,c賦值4艘绍。如果是print(sum(2, b = 3, 4)),這樣寫就報錯了秫筏,效果如下
錯誤信息:不允許混合名稱和位置參數(shù)诱鞠。也就是說它不能識別你這個4是傳給誰的,如果改為print(sum(2, b = 3, c = 4))就不會有問題了这敬。
(3)單表達式函數(shù)
??如果函數(shù)只返回一個表達式航夺,可以省略花括號”{ }“,直接”=“后返回崔涂。
//例如
fun sum(a: Int): Int = a + 1
(4)可變數(shù)量的參數(shù)
??可變數(shù)量參數(shù)定義方式是在參數(shù)定義前面加上“vararg”即可阳掐。在kotlin中使用可變數(shù)量參數(shù)不像java一樣,需要將可變數(shù)量參數(shù)作為方法里參數(shù)列表的最后一個參數(shù)冷蚂,可以放在任意位置缭保。
fun method(vararg args: Int){
for (it in args){
println("打印:$it")
}
}
fun main(args: Array<String>) {
method(1,2,3,4,5) //打印結果為:打域琛:1 打右章睢:2 打印:3 打邮ⅰ:4 打映骨住:5
}
如果該函數(shù)不止一個可變數(shù)量參數(shù)孕锄,還有其他參數(shù)并且在可變數(shù)量參數(shù)以后的吮廉,就要用命名參數(shù)了。
fun method(vararg args: Int, a: Int){
for (it in args){
println("打踊痢:$it")
}
}
fun main(args: Array<String>) {
method(1,2,3,4,5,a = 6) //這里的參數(shù)a傳參時宦芦,必須用“參數(shù)名 = 值”方式傳遞
}
總結:以上主要介紹了kotlin中數(shù)據(jù)基本類型、變量定義和函數(shù)定義的一些內(nèi)容轴脐,為了避免篇幅過長调卑,后面的內(nèi)容將分幾篇文章來發(fā)布抡砂。