Kotlin 語言基礎

開始kotlin語言的學習,kotlin 對於Android 來講還是一門很重要的語言,一起來學習下吧。

簡單知識瞭解:

//    var tv_content: TextView? = null//定義一個可空類型 強大的類型推斷
//    https://blog.csdn.net/xiaodouyaer624/article/details/82706568
//    val 相當於 final 因爲val不存在set方法
//	  lateinit var tv_content: TextView //lateinit 關鍵字延時加載
//    @Override 註解變成了 override關鍵字
//    一個類可繼承 open 關鍵字 和 abstract 關鍵字
//    companion 關鍵字 伴生對象 == static
//    ? null類型判斷		如果爲空就不會在調用後邊的 tv_content?.setText()
//	  !! 已經確定不是空,可以放心使用 tv_content!!.setText()

//    NPE 空指針異常 《解決空指針問題》
//    Int Int?	=  int Intenger

//    在 java 裏局部變量沒有默認值
//    在 kotlin 都沒有默認值包括全局變量和局部變量

//    字符串拼接 ${變量名}  或  $變量名
/*	
      字符串換行 <三個引號的作用>
				"""
				第一行
				第二行
				第三行
				中間不需要 \n
				"""
*/

//	  構造方法
//    一個類後邊家(),意思是調用了,這個類的無參構造方法
//    一個類存在 主構造函數 和 次構造函數 次構造必須實現主構造函數

//	  字段與屬性問題
//    字段 =  屬性 + get() + set()
//	  區別:字段會保存狀態,屬性不會保存狀態需要通過幕後字段 Filed 保存狀態

//	  幫助理解 幕後字段? 和 幕後屬性?
/*
幕後字段
定義:在Kotlin中定義一個普通屬性時,會爲該屬性生成一個field,getter,和setter,其中這個field就稱爲幕後字段(backing field)
何時會生成幕後字段?
對於var|val屬性
Kotlin自動生成了 		setter |getter                                           產生幕後字段
重寫了                   setter |getter                                          不產生幕後字段
在重寫了的           	setter |getter中使用了field                              產生幕後字段

幕後屬性
使用private修飾的屬性,就是幕後屬性
延遲初始化屬性lateinit 
	Kotlin要求所有屬性必須由程序員顯示初始化
		定義時初始化
		在構造器中賦值初始化
		所以例如Activity裏面的控件,都要用lateinit修飾
*/

//     Object   等同於   Object
//     String?  根  Any?
//	   String   根  Any  -->  Any?

/*
     PESC Producer exdends Consumer super 
					 取				  存
		java 中  ? exdends		  ? super 
	  kotlin 中  out			  in
	  kotlin 中	 協變			  逆變
*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章