Kotlin变量和常量

6ba261fe9dac4593b2f56cf9995f4de1.png

Kotlin变量及常量思维导图

 

 

目录

声明变量的标准形式

用var声明变量

用val声明变量

成员变量

可空变量

常量


声明变量的标准形式

用var声明变量

        标准格式:var 变量名:类型=值

        var声明的变量相当于Java中的普通变量,既可读又可写

        使用时标准格式可以简化,比如可以简化类型,由Kotlin解释器根据值推断类型,也可以省略值(类中的成员变量一般都要初始化,若不在声明处初始化,需用lateinit后续初始化) lateinit var 变量名:类型

var s:Int=123
var a:Double
var b="123"
a=123.4

class A{
    lateinit var s:String
}

用val声明变量

      标准格式:val 变量名:类型=值

      val声明的变量相当于Java中的final变量,只能读,初始化后即不可更改

      和var类似,格式也可简化,类内使用时可用by lazy延迟初始

class A{
    val name:String by lazy { "123" }
}
fun main(args:Array<String>){
    val s=123
    var a:Double
    //a=123报错
}

成员变量

     在类内声明的变量即为成员变量

     访问权限 var/val 变量名:类型=值 

     成员变量一般是必须要初始化的,若需要后续代码中再对该变量赋值,则

            var型变量采用lateinit的方式: lateinit var 变量名:类型

            val采用by lazy 延迟初始化的方式:val 变量名:类型 by lazy{}

    lateinit只用于var型变量,且只能用于非基本类型的变量,且不能用于可空变量,须指定类型

    by lazy只能用于val型变量,须指定类型

可空变量

    在Kotlin中,对于非可空变量,其值一定不会为null,故不用对不可空变量进行空处理

    而对于可空变量,其有固定的定义形式,可空变量须指定类型,其值可以是确定值,也可是null

    格式为 var/val 变量名 类型?=值        此时变量的类型为 类型?

    使用:

    1. if ... else ...

        if (变量==null) {  }else{  }

    2. ?.及链式使用

        变量?.属性/方法  当变量!=null时,执行相对应的属性和方法,否则返回null 

    3. let操作符

        变量?.let{}  当变量!=null时执行{}内语句 相当于 if(变量!=null){  }

    4.函数返回可空变量    

        当函数返回值的类型为 类型? 时,函数的返回类型也需要是 : 类型?

    5. Elvis操作符

    (1)?:  通常和?.相结合使用 当 ?:的前值为null 时,采用?:后的值使用

    (2)!!   当变量为null时会报异常

    (3)as? 当不能自动转换为?后类型时返回null

const val author="Aurora"//顶层声明常量
fun getLength(s:String?): Int? {//返回可空类型值,函数的返回类型也需要是可空 类型?
    return s?.length
}
fun main(args:Array<String>){
    var name:String ?="123454"
    var address:String ?=null
    // if ... else ...
    if (name!=null)
        println(name)//123454
    else
        println("name is null")
    if (address!=null)
        println(address)
    else
        println("name is null")
    // ?.
    println(name?.length)//6
    println(address?.reversed())//null
    // let操作符
    name?.let { println(name) }//123454
    address?.let{ println(address)}//不打印
    //Elvis操作符
    var length=name?.length?:-1
    //length=address!!.length//异常 NullPointerException
    var a:Int ?=name?.length as? Int
    println(a)//6
}

 

常量

    val声明的仍是变量,只是不可修改

    在Java中常量是const final 故在Kotlin中常量也是 const val 变量名:类型=值

    常量的使用地方:

              1.顶层声明:顶层即是整个文件内的最外层,也就是说普通类内、函数内并不是顶层

              2.对象声明:在object修饰的单例类中声明

              3.在伴生对象中声明 (单例类与伴生对象将在后面博客中介绍)

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值