kotlin基礎語法記錄(一)

  1. 可讀剧罩、可讀寫、延遲初始化
var  //可讀寫
val  //只讀
lateinit  //晚一點再進行初始化座泳,會被聲明為可空類型
//可空類型惠昔,不可空類型
//平臺類型
java中是通過注解實現(xiàn)可空類型和不可空類型(Nullable、NonNull)


var name: String? = null // ? 聲明一個可空類型的變量
name?.length()   // ? 安全調(diào)用挑势,判空
name!!.length() // !! 強制調(diào)用镇防,不判空

//Java中int float double long
對應kotlin->Int Float Double Long  不可空類型

//java中Int Float Double Long
對應kotlin->Int?  Float?  Double?  Long? 可空類型

//聲明一個延遲初始化的不可空變量
private lateinit name : String 

靜態(tài)類型編程語言:一個變量的類型一旦確定了就不能改變
動態(tài)類型編程語言:一個變量的類型可以隨時改變。python\js\groovy

  1. 靜態(tài)方法
//1潮饱、kotlin中沒有static關鍵字
//2来氧、kotlin中靜態(tài)方法寫法,文件中直接定義方法和變量,也叫頂層函數(shù)啦扬,包級函數(shù)
//       a)java調(diào)用kotlin靜態(tài)方法--->類名Kt.方法名()
//       b) @file:JvmName("AAA")修飾后中狂,在Java中可以使用AAA.方法名()調(diào)用。需要寫在文件最上面扑毡,package之前

//object創(chuàng)建類并創(chuàng)建其對象
//object修飾的類胃榕,可以認為變量和方法都會被定義為靜態(tài)的。其實是創(chuàng)建了CacheUtils的對象
object CacheUtils{
}  
//在kotlin中調(diào)用使用CacheUtils.getXX()
//在Java中調(diào)用使用CacheUtils.INSTANCE.getXX()
//該方法其實是創(chuàng)建了這個類的單例對象去使用的瞄摊。創(chuàng)建匿名內(nèi)部類也使用object關鍵字


//非object的類里面使用
class MyApplication{
    companion object {
        fun getXX():String{}
    }
}
//在Java中使用XX.Companion.

companion object {
     //加上  @JvmStatic可以在Java類里面使用類名.方法名()調(diào)用
    @JvmStatic 
    fun getXX():String{}
}
  1. 類型判斷和轉(zhuǎn)換
is  instanceof
as  強轉(zhuǎn)
AAA::class kotlin的class
AAA::class.java java的class

void對應Unit
Object對應Any
  1. switch case
when  Java中switch的高級版勋又,支持表達式
when (code){
  in 200..299 ->{}

}
  1. 構(gòu)造方法
construct(name:String) String super(name){}
  1. get set方法
set

//保證只生成一個公開的成員變量,而不是生成set get方法
@JvmField
var username:String? = null
  1. 數(shù)組
創(chuàng)建數(shù)組
arrayOf("a","b","c")  基本類型會自動裝箱换帜,因此基本類型不使用
intArrayOf(1,2,3)
數(shù)組長度size
arrayOf()
intArrayOf()
  1. 枚舉

  1. 編譯器常量
class XXX {
    companion object {
      //使用const關鍵字楔壤,類似于java中的static final String
      private val const NAME = "張三"
    }
}

  1. List、Map等集合類
//要么顯示的聲明類型
val list:ArrayList<String> = ArrayList()

//要么使用類型推斷
val list = ArrayList()

//要么使用類型推斷
val list = arrayListOf<String>()

//要么使用
val list = mutableListOf<String>()

//要么使用
val list:MutableList<String> = ArrayList()

//不能使用List惯驼,因為kotlin中List是不可修改的蹲嚣,沒有add函數(shù)的
val list:List<String> = ArrayList()

//遍歷
for (name : in list) {  
}

  1. 內(nèi)部類
//非靜態(tài)內(nèi)部類,需要inner修飾符
inner class XX {}

//靜態(tài)內(nèi)部類
class XXX {}

  1. internal
當前模塊內(nèi)可見祟牲,可以使某個public的類端铛,僅在當前module內(nèi)被訪問到,其他moudle內(nèi)訪問不到
某些類疲眷,希望在當前module內(nèi)到處哭訪問,但是又不希望外部mudule訪問您朽。
  1. 內(nèi)部類使用外部類this對象
internal class Outer {
    internal inner class Inner {
        var outer: Outer = this@Outer
    }
}
  1. 受檢異常
Kotlin 不需要使? try-catch 強制捕獲異常
  1. 聲明接?/抽象類/枚舉/注解
// 聲明抽象類
abstract class
// 聲明接?
interface
// 聲明注解
annotation class
// 聲明枚舉
enmu class
  1. 編譯期常量
在靜態(tài)變量上加上 const 關鍵字變成編譯期常量
  1. 標簽
在 Java 中通過 「 類名.this 例如 Outer.this 」 獲取?標類引?
在 Kotlin 中通過「 this@類名 例如 this@Outer 」獲取?標類引?
  1. 遍歷
for(item in items)
  1. 嵌套類
在 Kotlin 當中狂丝,嵌套類默認是靜態(tài)內(nèi)部類 (不持有外部類引?)
通過 inner 關鍵字聲明為普通內(nèi)部類 (內(nèi)部使?外部對象時就會持有外部類引?)
  1. 可?性修飾符
默認的可?性修飾符是 public
新增的可?性修飾符 internal 表示當前模塊可?
  1. open/final
Kotlin 中的類和函數(shù),默認是被 final 修飾的 ( abstract 和 override 例外)
  1. 注釋
注釋中可以在任意地?使? [] 來引??標哗总,代替 Java 中的 @param @link 等几颜。
  1. ?空斷?
可空類型強制類型轉(zhuǎn)換成不可空類型可以通過在變量后?加上 !! ,來達到類型轉(zhuǎn)換讯屈。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛋哭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涮母,更是在濱河造成了極大的恐慌谆趾,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叛本,死亡現(xiàn)場離奇詭異沪蓬,居然都是意外死亡,警方通過查閱死者的電腦和手機来候,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門跷叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事云挟“鹪遥” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵园欣,是天一觀的道長帖世。 經(jīng)常有香客問我,道長俊庇,這世上最難降的妖魔是什么狮暑? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮辉饱,結(jié)果婚禮上搬男,老公的妹妹穿的比我還像新娘。我一直安慰自己彭沼,他們只是感情好缔逛,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著姓惑,像睡著了一般褐奴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上于毙,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天敦冬,我揣著相機與錄音,去河邊找鬼唯沮。 笑死脖旱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的介蛉。 我是一名探鬼主播萌庆,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼币旧!你這毒婦竟也來了践险?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吹菱,失蹤者是張志新(化名)和其女友劉穎巍虫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳍刷,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡垫言,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倾剿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筷频。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚌成,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凛捏,到底是詐尸還是另有隱情担忧,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布坯癣,位于F島的核電站瓶盛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏示罗。R本人自食惡果不足惜惩猫,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚜点。 院中可真熱鬧轧房,春花似錦、人聲如沸绍绘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陪拘。三九已至厂镇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間左刽,已是汗流浹背捺信。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欠痴,地道東北人迄靠。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像斋否,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拭荤,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 自從實習結(jié)束后直到現(xiàn)在將近一年多的時間再也沒有用過kotlin茵臭, 在今年五月份I/O大會上,Google再次明確了...
    Scus閱讀 1,355評論 0 0
  • 概要 類在聲明接口&抽象類&枚舉&注解時舅世,與 Java 相比基本一樣旦委,除了枚舉&注解在聲明的時候后面喲啊加上cla...
    有啊記閱讀 418評論 0 2
  • 官方 官方版本 github 基礎 數(shù)據(jù)類型 整數(shù) 類型大小(比特數(shù))最小值最大值Byte8-128127Shor...
    fengyongge閱讀 387評論 0 1
  • 1雏亚、隱式解析可選類型 有時候在程序架構(gòu)中缨硝,第一次被賦值之后,可以確定一個可選類型總會有值罢低,這時候每次使用時都判斷和...
    Mr_xuy閱讀 472評論 1 4
  • 第2章 Kotlin 語法基礎 人與人之間通過語言來交流溝通查辩,互相協(xié)作胖笛。人與計算機之間怎樣“交流溝通”呢?答案是編...
    光劍書架上的書閱讀 1,601評論 0 6