• Kotlin语言基础(二)-变量和数据类型


    Kotlin语言基础-变量和数据类型

    一、Kotlin的变量

    Kotlin变量有两种形式var(variable)和val(value,取值)
    val定义只读量,一旦创建,其值不会发生变化
    例:

    val a = 23
    
    • 1

    那么对于a对应的值就只能是23,不会发生变化。如何试图对a重新赋值都会导致编译错误。
    var定义可变的变量,可以多次赋值修改变量的值。
    例:

    var b = 23
    b=25
    
    • 1
    • 2

    Kotlin语言中任何数据都是对象,因此对象都具有一个特定的数据类型。

    二、数据类型

    1.常见的数据类型

    Short:短整型(16位)
    Long:长整型(64位)
    Int:整数(32位)
    Double:双精度实数(64位)
    Float:单精度实数(32位)
    Byte:字节类型(8位)
    Boolean:布尔类型(取值true或false)

    在上述的类型中,表示常见的基本类型。
    例如:

    var a = 23
    
    • 1

    编译器会自动推断数据类型为Int

    var b = 23.0
    
    • 1

    编译器会自动推断数据类型为Double
    注意:var c:Int = null 是错误的。任何变量所属的类型后没有?表示非可空类型。
    如果需要表示为可空类型,需要在数据类型后增加?,形如:
    var c:Int? = null
    这种定义c的变量才是正确的。

    2. Any和Any?
    任何一种非空类型的父类都是Any类型,Any类型表示成任何类型:
    例如:

    var d:Any = 23
    d = true
    d = 23.34
    
    • 1
    • 2
    • 3

    上述表示均为正确。

    如果对于任何类型需要定义为可空类型,则可以表示为Any?类型,例:

    var e:Any? = null
    e = 23
    e = false
    
    • 1
    • 2
    • 3

    3.Nothing
    Nothing类型表示没有对象实例. 可以通过Nothing表示一个不存在的值。如果一个函数返回Nothing,这意味函数没有返回任何值(通常会抛出异常)。例:

    fun doSomething():Nothing{
        throw NullPointerException("空指针")
    }
    
    • 1
    • 2
    • 3

    有一种特殊的表示,如

    var c = null
    
    • 1

    这时,编译器会将c解析成Nothing?可空的,实质上的含义是不表示任何实例对象,即表示不存在的实例对象。

    4.可空类型的相关运算
    (1)安全调用 ?.
    如果一个对象为null,调用这个对象的方法会抛出空指针异常,导致运行出现问题。因此需要避免这种情况发生,利用安全调用可以先对对象进行判断,如果为空返回null,否则执行操作。例如:

    var str:String? = null
    println(str?.length)
    str = "hello"
    println(str?.length)
    
    • 1
    • 2
    • 3
    • 4

    运行结果是:

    null
    5

    (2)Elvis运算
    Elvis运算符是?:
    表达的意思是如果对象为null,则返回?:后面的表达式的结果;否则返回对象本身。
    例如:

    var str :String? = null
    println(str?:"空字符串”)
    str = "hello"
    println(str?:"空字符串”)
    
    • 1
    • 2
    • 3
    • 4

    运行结果是:

    空字符串
    hello

    (3)非空断言运算
    非空断言运算符是!!,它用于判断对象是否为null,如果是,抛出NullPointerException异常,否则执行后续的操作。例:

    var str:String? = null
    println(str!!.length)
    
    • 1
    • 2

    运行结果是:

    Exception in thread “main” java.lang.NullPointerException …

    又如:

    var str:String? = “hello”
    println(str!!.length)
    
    • 1
    • 2

    运行结果是:

    5

    参考文献:
    陈轶《Android移动应用开发(微课版)》 清华大学出版社 ISBN 978-7-302-59734-6

  • 相关阅读:
    一、iMove源码解读:初识
    深度学习与目标检测:从卷积神经网络到YOLOv8概念介绍
    四嗪-Methyltetrazine-PEG4-NH-Boc/PEG9-acid/PEG8-amine HCl salt/Sulfo-NHS ester性质
    C++中queue的用法(超详细,入门必看)
    微信小程序使用textarea后内容随着屏幕上下移动的问题
    Qt学习15 用户界面与业务逻辑的分离
    【计算机毕业设计】基于netty的网关推送平台
    walmart沃尔玛美海淘攻,2024最新版walmart海淘教程
    “AURORA-M:首个遵循人类审查安全指令微调的开源多语言模型
    大数据Flink(九十七):EXPLAIN、USE和SHOW 子句
  • 原文地址:https://blog.csdn.net/userhu2012/article/details/132676216