標(biāo)識(shí)符和關(guān)鍵字
標(biāo)識(shí)符
標(biāo)識(shí)符就是變量、常量、函數(shù)、屬性、類(lèi)、接口和擴(kuò)展等由程序員指定的名字。
標(biāo)識(shí)符命名規(guī)范
- 區(qū)分大小寫(xiě),也就是說(shuō)Myname與myname是兩個(gè)不同的標(biāo)識(shí)符。
- 首字符,可以是下劃線但是不可以是數(shù)字。
- 除首字符以外其他字符,可以是下劃線、字母和數(shù)字。
- 硬關(guān)鍵字不能作為標(biāo)識(shí)符,軟關(guān)鍵字、修飾符關(guān)鍵字在它們的使用場(chǎng)景之外可以作為標(biāo)識(shí)符使用。
- 與Java不同的是在Kotlin中‘$’不可以作為標(biāo)識(shí)符。
- 特定標(biāo)識(shí)符field和it。這兩個(gè)標(biāo)識(shí)符都是系統(tǒng)隱藏的變量,最好不要做為標(biāo)識(shí)符,當(dāng)然一般場(chǎng)景下也可以使用其作為標(biāo)識(shí)符。
- 如果非要使用關(guān)鍵字作為標(biāo)識(shí)符,也不是不可以,但是需要使用反引號(hào)將標(biāo)識(shí)符括起來(lái)比如:
class,并且普通標(biāo)識(shí)符也可以使用反引號(hào)進(jìn)行修飾。
關(guān)鍵字
Kotlin語(yǔ)言中有70多個(gè)關(guān)鍵字,全部是小寫(xiě)英文字母,以及!和?等字符構(gòu)成。
- 硬關(guān)鍵字
as、as?、break、class、continue、do、else、false、for、fun、if、in、!in、interface、is、null、object、package、return、super、this、throw、true、try、typealias、val、var、when、while - 軟關(guān)鍵字
by、catch、constructor、delegate、dynamic、field、finally、file、get、import、init、param、property、receiver、set、setparam、where - 修飾符關(guān)鍵字
abstract、annotation、companion、const、crossinline、data、enum、external、final、infix、inner、internal、lateinit、noinline、open、operator、out、override、private、protected、public、reified、sealed、suspend、tailrec、vararg
常量和變量
變量
可以改變值的聲明就是變量,聲明變量的關(guān)鍵字,為 var 我們不需要指定數(shù)據(jù)類(lèi)型,因?yàn)镵otlin的類(lèi)型的自動(dòng)推導(dǎo)會(huì)自動(dòng)指定數(shù)據(jù)類(lèi)型。
比如 var index = 1 ,并且這里我們是不需要寫(xiě)分號(hào)的。
當(dāng)然我們也可以指定數(shù)據(jù)類(lèi)型 var index : Int = 1 ,這里的數(shù)據(jù)類(lèi)型開(kāi)頭要大寫(xiě)。
常量
常量就是初始化之后就不能改變值得聲明,常量有兩種聲明方式,可以使用val來(lái)進(jìn)行聲明或者const val來(lái)進(jìn)行聲明。
- val聲明的常量也叫只讀變量還可以叫運(yùn)行時(shí)常量,是在運(yùn)行時(shí)進(jìn)行初始化的。
-
而const val是在編譯期就進(jìn)行初始化了所以也叫編譯期常量,只能用于頂層常量聲明或者聲明對(duì)象中的常量聲明,而且只能是String類(lèi)型或者基本數(shù)據(jù)類(lèi)型(整數(shù)、浮點(diǎn)等等)。什么是頂層常量,就是在函數(shù)之外或者類(lèi)之外聲明的常量,不屬于任何一個(gè)對(duì)象的常量為頂層常量。下圖中c就是一個(gè)頂層常量。
在這里插入圖片描述
兩者之間的區(qū)別,一者是在運(yùn)行期進(jìn)行初始化,另一者是在編譯期進(jìn)行初始化,由于初始化的時(shí)間不同,也就造成了兩者之間的區(qū)別,運(yùn)行期常量是可以根據(jù)你程序的環(huán)境變化而變化的,而編譯期常量,一旦初始化就不能改變了,因?yàn)槭窃诰幾g期間就進(jìn)行了初始化,不會(huì)因?yàn)槌绦颦h(huán)境的變化而變化。
注釋
注釋這個(gè)相信大多數(shù)人都會(huì)了,之前都接觸過(guò)
單行注釋
// 需要注釋的內(nèi)容
塊注釋
/*
塊注釋
*/
//并且在Kotlin中塊注釋是可以進(jìn)行嵌套的,在有些語(yǔ)言中是不支持的。
/*if(x >= 4){
/*Log.e(TAG,"haha")*/
} else {
/*Log.e(TAG,"hehe")*/
}*/
基本上與java一致的,不過(guò)Kotlin的話(huà),還有一個(gè)文檔注釋?zhuān)瑫?huì)在以后的博客中體現(xiàn)出來(lái)。
語(yǔ)句和表達(dá)式
語(yǔ)句
- 什么是語(yǔ)句?
沒(méi)有返回值的代碼就是語(yǔ)句。比如說(shuō)我們?cè)诳刂平Y(jié)構(gòu)中中使用的for,do-while還有while語(yǔ)句。并且在kotlin中語(yǔ)句的結(jié)束,省略了分號(hào);。不過(guò)可以加也可以不加,不過(guò)在一行中存在超過(guò)一條語(yǔ)句的情況下不可以省略分號(hào)。 - 什么是表達(dá)式?
表達(dá)式就是有返回值的代碼。比方說(shuō) 1+1,when(同java中switch),if,try,控制結(jié)構(gòu)表達(dá)式,以及表達(dá)式函數(shù)體和對(duì)象表達(dá)式。
//在Kotlin中表達(dá)式有多種表現(xiàn)形式
val index = 95 //這里 95 就是一個(gè)表達(dá)式,應(yīng)為它是有返回值的返回了 95 這個(gè)結(jié)果
//if控制結(jié)構(gòu)表達(dá)式
val result = if(index > 60) "不可以" esle "可以" //在Kotlin中if控制結(jié)構(gòu)可以直接作為表達(dá)式來(lái)返回結(jié)果,這在java中是不可以的。
包
- 包的作用
與java中是完全一樣的,也就是提供一個(gè)命名空間,比方說(shuō)我們?cè)诿臅r(shí)候我們的類(lèi)相互之間會(huì)有沖突,所以我們把相同命名的類(lèi)放在不同的命名空間下,也就是包。 - 包的定義
都是以關(guān)鍵字 package 來(lái)進(jìn)行命名,都是小寫(xiě)的英文字母,并且都是合法有效的標(biāo)識(shí)符。在操作系統(tǒng)中是以文件夾的形式存在的。也就是說(shuō)不管是java也好Kotlin也好,都是一樣的,都是利用操作系統(tǒng)的目錄結(jié)構(gòu)與包的結(jié)構(gòu)對(duì)應(yīng)起來(lái),以一個(gè)或多個(gè)目錄反應(yīng)出來(lái)。 - 包的引用
應(yīng)用包使用的是 import 關(guān)鍵字,基本與java相同。并且在引用的時(shí)候,要注意包引用沖突問(wèn)題。