美文网首页
Kotlin 学习简单总结归纳

Kotlin 学习简单总结归纳

作者: 代瑶 | 来源:发表于2018-05-25 16:14 被阅读0次

    1.1. 低位数据类型转高位需要调用方法 如Byte转Int
    val n : Byte = 10 val m : Int = 1;
    m = n.toInt();

    1.2. 字符Chat 类型不能直接对应ASCII 的数字
    val c : Chat = 97 是错误的 写成 = 'a' 是可以的

    1.3. arrayOf 是任意数值的数组,arrayOfNulls 指定长度的null数组,intArrayOf 指定类型的数组, Array() 数组

    1.4. 保持原有样式的String
    var s3 = """
    hello
    world
    """
    val i = 10
    val s1 = "i= $i"

    1.5. 包名不是对应的文件夹,只是方便引用和区分调用的方法来自哪里,通过import 可以导入指定包 , import b.getName as bm 可以设定别名

    1.6. if else 语句块 when 相当于switch

    1.7. for(item in collection) 迭代循环, for((index,value) in arr.withIndex()) 索引迭代循环

    2.1 类有一个主构造器 class Preson constructor(firstName : String)
    主构造器在init{} 代码中进行初始化
    和若干个第二构造器,这些构造器中除了主构造器参数都不允许为var和val也就意味着这些构造器参数是只读状态不能修改

    2.2 创建一个单例


    image.png

    2.3 构造器的默认参数 class Customer(val customerName:String = "Bill") 在调用的时候传入参数直接填写 Customer.customerName

    2.4 实现get set 方法 利用提供的filed属性


    image.png

    2.5 方法使用默认参数,process(var name:String = "DY",var age:int = 30)
    调用的时候也可以指定参数 process(age= 25) 那么那么使用默认参数, 传递多个参数时候vararg 标记

    2.6 方法分为全局方法和类成员函数 还有一种本地函数,生命周期在方法内,同样类也有类部类,外部访问时将类部类标记成inner就可以了,

    3.1 修饰符除了常用的private等外 加了internal 解释任何Model内部内都可以访问 ,open 标在class 前面表示可以继承和被重写,默认class 通过final 标记

    4.1 枚举和java相似 enum class Direction{NORTH,SOUTH}


    image.png

    4.2 扩展API, 例如ArrayList 我们要添加一个swap方法 写一个fun方法放到代码最上面


    image.png

    扩展函数如果方法名字和参数一样 优先级是class 内部成员函数优先

    扩展原生API ,扩展自定义类,扩展已有的内部方法是无法覆盖的,扩展属性,扩展伴随对象

    5.1 数据类 解析json 数据类标记为data class xx 数据类和普通类相似,可以拥有内部类,最大好处是通过构造器自动生成相关比对代码。 要注意的 主构造器必须有一个参数 ,参数必须标记val或var,不能是抽象类 open类、封闭类、或类部类

    5.2 解构val {name,age} = User("张三",15)写法是这样的,封闭类sealed 是枚举的扩展类,最大的好处是when表达 image.png 6.1 泛型写法 image.png

    6.2 java 通配符? 在kotlin 中取代的是out 和 in, out常见在方法返回值使用 in常见当参数使用

    关于第六章泛型写法暂时写到这里,还没太清楚

    7.1 对象和委托
    7.1.1 对象匿名类


    image.png
    image.png
    image.png

    7.1.2 声明匿名对象,只能用在本地函数(fun 函数里面的 fun 函数) 或者 private 声明的 才能使用

    7.1.3 访问封闭作用域内的变量 在匿名对象中直接可以修改var 变量

    7.1.4 陪伴对象 在kotlin 中并没有静态类成员变量概念,为了解决这个问题就有了它,companion object

    7.2 委托 对象委托 : class Deriverd(b: Base) : Base by b 和属性委托 感觉用的应该不多

    7.3 标准委托库
    lazy 惰性装载 默认是同步的 属性只会在唯一线程内执行 如果不需要同步 多个线程多次初始化可以指定LazyThreadSafetyMode.PUBLICATION参数,如果确定它只会在一个线程中执行 那么可以使用LazyThreadSafetyMode.NONE 线程不会保持同步 不会有性能损失

    7.4 可观察属性


    image.png

    Delegates.observable 监听状态被改变
    Delegates.vetoable 阻止属性 判断

    7.5 Map 委托 和 MutableMap委托
    map 委托可读 不可写 Mutable 可读可写

    8 高阶函数和Lambda 表达式
    8.1 将方法作为参数传递


    image.png

    9.1 infix 中缀函数 vararg 可变函数 泛型函数 内联函数 inline


    image.png

    10 常见操作符重载


    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    11 kotlin的空安全
    ?.let 过滤空值
    nullableList.filterNotNull() 过滤集合中空值

    相关文章

      网友评论

          本文标题:Kotlin 学习简单总结归纳

          本文链接:https://www.haomeiwen.com/subject/zugsjftx.html