Kotlin使用总结

学习笔记,仅记录和Java不一样的地方

可见性

  • default,public:能见到类声明的
  • private:相同class可见
  • protected:相同class及子类可见
  • internal:能见到类声明的 本模块内 的任何客户端都可见

变量方法定义

var a = 1
var s = "asd"
var s : String = "asd"
var s : String ?= null
laterinit var s : String

var与val

var 是可变变量

val 只读变量,不能提供set方法

位操作符

  • shl(bits) – 左移位 (Java’s <<)
  • shr(bits) – 右移位 (Java’s >>)
  • ushr(bits) – 无符号右移位 (Java’s >>>)
  • and(bits) – 与
  • or(bits) – 或
  • xor(bits) – 异或
  • inv() – 反向

非空机制

字段后加 !!:如果字段为空,则抛出空指针异常

另一种字段后加 ? :可不做处理返回值为 null或配合 ?: 做空判断处理

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

判断字段是否初始化

::wifiList.isInitialized    

集合

  • 创建(只读方式:不可增删元素)

    val mapp = mapof("key" to 24,"name" to "zhangsan","age" to 25)
    val setTea: Set<String> = setOf("E", "F", "B", "C", "A", "D", "F", "B")
    val bookA = Book("A", 20, "Jone")
    val bookB = Book("B", 21, "Green")
    val bookC = Book("C", 22, "Mark")
    val bookD = Book("D", 23, "Node")
    val bookE = Book("E", 24, "Blue")
    
    val listBook = listOf<Book>(bookA, bookB, bookC, bookD, bookE)
    
  • 增删元素(转换成以下三个才可以)

    MutableList
    MutableSet
    MutableMap
    

循环与条件控制

  • if 可以使用区间

    val x = 5
    

    val y = 9
    if (x in 1..8) {
    println(“x 在区间内”)
    }

类与接口

接口里面可以有非抽象方法

静态方法与变量

使用companion object {} 包裹的,就是静态方法和字段

companion object {
    val EXTRA_PARAM_MAC_ADDRESS = "EXTRA_PARAM_MAC_ADDRESS"
    val EXTRA_PARAM_WIFI_NAME = "EXTRA_PARAM_WIFI_NAME"

    fun getCallingIntent(activity: BaseActivity, deviceInfo: WiFiDeviceInfo?):Intent{
        var intent = Intent()
        intent.setClass(activity,WiFIUpdateActivity::class.java)
        intent.putExtra(EXTRA_PARAM_MAC_ADDRESS,deviceInfo?.deviceId)
        intent.putExtra(EXTRA_PARAM_WIFI_NAME,deviceInfo?.deviceInfo)
        return intent
    }
}

构造方法

第一构造方法中的输入参数,可以在init函数块中取出来
也可以使用constructor生成第二构造方法

泛型

使用 : 表示,可以接受子类

open class BasePresenter<V : BaseView> {
  var view: V ? = null;
  fun attachView(view: V) {
    this.view = view
  }
}

内置函数let apply等

这些内置函数可以进行一些初始化的操作

apply的返回值是对象自身,对象的方法写在apply里面,可以让代码显得紧凑,逻辑更清晰

展开阅读全文

没有更多推荐了,返回首页