美文网首页
Kotlin的类型系统

Kotlin的类型系统

作者: chordwang | 来源:发表于2018-03-05 16:44 被阅读21次

    6.1 可空性

    可空性:Kotlin系统中避免NullPointerException错误的特性

    1. 可空类型
      如果你允许调用方法时传给它所有可能的实参 ,包括哪些可以为null的实参,需要显式地在类型名称后面加上文号来标记。
    fun strLenSafe(s:String?) = ···
    //问号可以加在任何类型的后面来表示这个变量可以存储null引用
    

    没有问号的类型标识这种类型的变量不能存储null引用。所有常见类型默认都是非空的,除非显式地标记为可空
    一旦标记为可空,则能对该变量进行的操作也会受到限制

    1. 类型的含义
      类型就是数据的分类,决定了该类型可能的值,以及该类型的值上可以完成的操作

    2. 安全调用运算符:‘?.’
      允许把一次null检查和一次方法调用合并成一个操作
      调用null值的方法,调用不会发生,表达式的值为null
      也可以调用属性

    3. Elvis运算符:‘?:’

    fun foo(s: String?){
      val t :String = s  ?: ""
    }
    

    Elvis运算符接收两个参数,如果第一个运算数不为null,运算结果就是第一个运算数,否则为第二个运算数

    1. 安全转换运算符:‘as?’
      安全转换运算符尝试把值转换成给定的类型,如果类型不合适就返回null

    2. 非空断言:‘!!’

    fun ignoreNulls(s: String?){
      val sNotNull:String = s!!
    }
    //如果s为null,则抛出NullPointerException,否则表达式返回s
    
    1. ‘let’函数
      ‘let’函数做的事情就是把一个调用它的对象编程Lambda表达式的参数。
    foo?.let{
      print(it)
    }
    //foo为null时,Lambda不会被执行
    
    1. 延迟初始化的属性
    2. 可空类型的扩展
    1. 类型参数的可空性
      Kotlin中所有泛型类和泛型函数的类型参数默认都是可空的。
      要使类型参数非空,必须要为它指定一个非空的上界,那样泛型会拒绝可空值作为实参

    2. 可空性和Java

    6.2基本数据类型和其他基本类型

    Kotlin不区分基本数据类型和它们的包装类型

    1. 基本数据类型:Int、Boolean和其他
    2. 可空的基本数据类型:Int?、Boolean?和其他

    相关文章

      网友评论

          本文标题:Kotlin的类型系统

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