Kotlin 學習2

Kotlin 學習2

官方文檔

官方文檔java

官方中文數組

kotlin語法與Java的不一樣

22. 引用java或自定義的函數或變量與kotlin關鍵字相同是,用兩個 ` 包起來

//  若是 in 爲java的一個函數, 定義以下
// class  A{
// 	void in();
//  }
x = A()
x.`in`()    // in 是kotlin關鍵字

kotling關鍵字:ide

關鍵字 說明
abstract 抽象聲明,被標註對象默認是open
annotation 註解聲明
by 類委託、屬性委託
class 聲明類
companion 伴生對象聲明
const 聲明編譯期常量
constructor 聲明構造函數
crossinline 標記內聯函數的lambda表達式參數,標識該lambda函數返回爲非局部返回,不容許非局部控制流
data 數據類,聲明的類默認實現equals()/hashCode()/toString/copy()/componentN()
enum 聲明枚舉類
field 屬性的幕後字段
fun 聲明函數
import 導入
in 修飾類型參數,使其逆變:只能夠被消費而不能夠被生產
init 初始化塊;至關於主構造函數的方法體
inline 聲明內聯函數
inner 標記嵌套類,使其成爲內部類:可訪問外部類的成員
interface 聲明接口
internal 可見性修飾符,相同模塊內可見
lateinit 延遲初始化,避免空檢查
noinline 禁用內聯,標記內聯函數不須要內聯的參數
object 對象表達式、對象聲明
open 容許其它類繼承;kotlin類默認都是final,禁止繼承
operator 標記重載操做符的函數
out 修飾類型參數,使其協變:只能夠被生產而不能夠被消費
override 標註複寫的方法、屬性
package 包聲明
private 可見性修飾符,文件內可見
protected 可見性聲明,只修飾類成員,子類中可見
public kotlin默認的可見性修飾符,隨處可見
reified 限定類型參數,須要配合inline關鍵字使用
sealed 聲明密封類,功能相似枚舉
super 訪問超類的方法、屬性
suspend 聲明掛起函數,該函數只能從協程和其餘掛起函數中調用
throw 拋異常
typealias 聲明類型別名
val 聲明只讀屬性
var 聲明可變屬性
vararg 修飾函數參數:聲明爲可變數量參數

23. 強制類型轉換用 asas?

x: A = y as A      		//將y強轉爲 A 類型
x: A? = y as? A		//將y強轉爲 A 類型, 轉換失敗可爲 null

24. import 兩個類名相同,包名不一樣的類,能夠設置別名, 用 as

import xxx.xxx.A
import yyy.yyy.A  as  YA   //爲避免與 xxx.xxx.A衝突,引進別名

x = A()     // == xxx.xxx.A()
y = YA()   //使用別名建立對象, ==  yyy.yyy.A()

25. 任何類型均可以設置別名

typealias  A = ABCDEFG        //類別太長,設置個短的別名
x = A()

26. 用 is 可判斷對象的實際類型,一旦判斷成功,能夠不用強轉,直接使用該類型方法

class ABC {
	fun abc() { }
}

val x: Any  = ABC()
x.abc()		//error, x是Any類型,沒有 abc() 方法

if( x is ABC ) {
	x.abc()    // OK ,已經知道 x 就是 ABC 類型
}

27. 類和函數,屬性定義不加 open ,默認是不可繼承的

28. in 運算判斷元素是否在集合中, .. 運算表示一個範圍, !in 運算判斷元素不在集合中

x in 1 .. 9      // x = 1 到 9 的任何Int 就返回 true

for( y in 0 .. 100) {
	println(y)      //循環0到100, 打印
}

29. 函數支持可變參數,可變參數數量不定, 再也不支持java 的 new Int[] { 1,2,3 ...} 這樣的不定參數初始化

var x = arrayOf(1,2,3)      // 數組 [ 1, 2, 3 ]
x = arrayOf(1,2,3,4,5)      // 數組 [ 1, 2, 3, 4, 5 ]

不定參數定義函數

fun f1( vararg  ls: Int) {
	for ( x in ls ) {
		println("${x} , ")
	}
}

f1(1,2,3)     // 輸出 1 , 2 , 3 ,
f1(1,2,3,4,5)     // 輸出 1 , 2 , 3 , 4 , 5 ,

30. internal 修飾的類,函數,屬性,變量,在同一模塊(如打包成同一給 jar 文件的代碼屬於同一個模塊)是全局 public的,可是到了模塊外,就是 private 的,不可調用,這樣能夠保護一些內部敏感函數不被外界調用

相關文章
相關標籤/搜索