kotlin编程:变量

作者: 麻辣阁 分类: kotlin 发布时间: 2018-11-28 17:16

可重复赋值变量与不可重复赋值变量

kotlin声明变量可以用下面两个关键字

  • var: 后跟变量名, 声明的变量可以重新赋值
  • val: 后跟变量名, 声明的变量不能重复赋值.

也就是说用 val 声明的变量只能赋值一次, 赋值得到的复合类型如果是可以改变的, 可以直接改变该复合类型的值.

fun main(args: Array<String>) {
    var name = "小明"
    name = "小张" // ok
    //val name = "小明" //报错, 同一个变量声明冲突
    val name2 = "小张"
    //name2 = "小明" // Error: Val cannot be reassigned

    var nameList = listOf("David", "Bob","Lee")
    nameList = listOf("Adam", "Elle","Jimmy") //ok, 可变变量可以重新赋值
    //nameList[0] = "Jen" // 报错: 变量可变,但值本身不可变
    nameList = mutableListOf("Adam", "Elle","Jimmy")
    nameList[0] = "Jen" //ok,变量可变, 值本身也可变

    val nameList2 = listOf("David", "Bob","Lee")
    //nameList2 = listOf("Adam", "Elle","Jimmy") // 报错, 不能对 val 类型变量重新赋值

    val nameList3 = mutableListOf("Adam", "Elle","Jimmy")
    nameList3[0] = "Jen" //ok,变量不可变, 但值本身可变

    println("$name, $name2") //小张, 小张
    println("$nameList,$nameList2,$nameList3") //[Jen, Elle, Jimmy],[David, Bob, Lee],[Jen, Elle, Jimmy]
}

类型推断

kotlin 定义变量的语法: var/val 变量名:变量类型 ,如果在声明变量时初始化, 可以不指定变量类型, 但这时候你就得接受 kotlin 的类型推断得到的类型.

  • 类型推断对字符,字符串和大部分小范围内的数字ok
  • 要特别小心数字大小可能为长整型, 双精度的类型.
  • 数字最好明确指定类型, 不用类型推断
  • Any 是类型体系中的根节点, 如果要定义随便改变类型赋值的变量, 用 var 关键字并且指定 Any 类型, 你就可以随便浪了!
fun main(args: Array<String>) {
    var littleInt = 6000
    //littleInt = 54354354358239 //  Error: Kotlin: The integer literal does not conform to the expected type Int

    var bigInt:Long = 6
    bigInt = 54354354358239  //ok

    var anyType: Any = "小明"
    anyType = 12
    print(anyType) //12
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注