Kotlin 零碎知識點彙集

6、java和kotlin 的代碼相互轉換

6.1、java -->kotlin 4種方法:

1.ctrl + shift + a 快捷鍵 輸入Convert Java File to Kotlin File
2. ctrl +alt + shift + k 將 Java 代碼轉換爲 Kotlin
3.打開要轉換的java文件,然後選擇 Code -> Convert Java File to Kotlin File (在最底部)
4.鼠標移到java目錄下的任意文件位置,鼠標右鍵後選new->Kotlin File/class(它默認都會在java目錄下創建一個.kt文件),最後將要轉換的java代碼複製到該.kt文件中即會自動完成轉換;

6.2、kotlin -->java:

先Tools>Kotlin>Show Kotlin Bytecode,然後點擊Decompile。

5、數據類型

https://www.kotlincn.net/docs/reference/basic-types.html

Kotlin中數字相關的內置類型有: byte、short、Int、Long、Float、Double。

需要注意的:

  • 沒有自動向上轉型,比如Int轉Long,需要自己調toXxx方法轉;
  • Long類型結尾必須爲大寫的L,不能爲小寫,比如1024L
  • 字符Char不是Number,用單引號來聲明,比如’c’,不能像Java一樣直接拿來當數字使,如果你想把Char的值給Int,需要調toInt()方法
  • Boolean的值爲true或false
  • Kotlin不支持8進制,十六進制0x開頭,二進制0b開頭;
  • 位運算符,Java中的與或運算符用:|和&,kotlin中使用or和and關鍵字來替代其他運算符也有分別的關鍵字替代:shl(有符號左移),shr(有符號右移),ushr(無符號右移),xor(按位異或),inv(按位取反)

4、標籤@的使用

Kotlin 中存在 3 種跳出程序流程的表達式:

  • return. 默認行爲是, 從最內層的函數或 匿名函數 中返回.
  • break. 結束最內層的循環.
  • continue. 在最內層的循環中, 跳轉到下一次循環.

標籤:
Kotlin 中的任何表達式都可以用 label 標籤來標記;
標籤由標識符後面加一個 @ 符號構成, 比如: abc@,return@ 都是合法的標籤(參見 標籤語法).

loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (...) break@loop
    }
}

我們在lambda表達式開頭處添加了loop@標籤,該標籤相當於是記錄了lambda表達式的指令入口地址。然後通過@loop表達式跳轉到lambda表達式該地址。

隱含標籤:
隱含標籤的名稱與 Lambda 表達式被傳遞去的函數名稱相同。
使用標籤控制 return 的目標:return@

btn_login.setOnClickListener({
  val phone = et_phone.text.toString().trim()
   if (TextUtils.isEmpty(phone)) {
       ToastUtils.showShortToast(this, "手機號不能爲空")
       return@setOnClickListener //從lambda表達式@setOnClickListener中返回。
   }
	...
})

返回與跳轉

https://www.jianshu.com/p/0b88c4e50768

3、Getters 與 Setters

聲明一個屬性的完整語法是

var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]

其初始器(initializer)、getter 和 setter 都是可選的。屬性類型如果可以從初始器 (或者從其 getter 返回值,如下文所示)中推斷出來,也可以省略。

2、getClass()

要取得對象的 Java 類,請在類引用上使用 java 擴展屬性:

ClassName::class.java
例如:val fooClass = Foo::class.java

上面的代碼使用了自 Kotlin 1.1 起支持的綁定的類引用。你也可以使用 javaClass 擴展屬性:

instance.javaClass
例如:val fooClass = foo.javaClass

1、 Activity跳轉

方法一(通過class):

 val intent = Intent() 
 intent.setClass(this,Main2Activity::class.java)
 startActivity(intent)

方法二(通過Action):
兩個Activity屬於不同的模塊,並且沒有依賴關係。

val intent = Intent() 
intent.setAction("XXXXXXX")
startActivity(intent)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章