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