02. 基本类型和变量:关于变量
2022年5月6日
02. 基本类型和变量:关于变量
1. 变量
变量持有对象的引用,在Kotlin中基本类型也是对象。
虽然基本类型是对象,但是在做如下操作时
var a=1;
var b=a;
var a=3;
println(a)
println(b)
输出
3
1
var b=a 是取出a的值,复制他们,并将该副本保存至b。 这意味着a的变更并不会影响到b的值,和java一样。
但是创建类的对象的情况
class Entity{
var name: String = ""
}
fun main(args: Array<String>) {
var a = Entity()
a.name = "赵思琦"
var b = a
a.name="牛掰"
println(a.name)
println(b.name)
}
输出
123
123
a也会发生改变,并不是复制,而是引用。
2. 强制类型转换
var b:Double=1.0
var a:Int=b.toInt()
将b的值复制到a的内存中,如果b的占用内存空间大于a,那么就会出现溢出的情况,这时编译器会舍弃掉超出的部分。
当然,这不是直接截取。 着涉及到数值正负/位运算/二进制/2的补数。
3. 数组
var a= arrayOf("1",2,3)
如上,它支持不同类型的变量的集合。编译器会自动推断对应的类型。
数组中持有变量,而变量持有值的引用。
3.1 val可以限制变量不能指向其他数组
val a= arrayOf("1",2,3)
a= arrayOf(1,2,3)
3.2 val不能限制数组中的变量更引用,或者说数组中的变量重新赋值
val a= arrayOf(1,2,3)
a[0]=1
3.3 只读数组
val a= arrayOf("1",2,3)
a[0]=1 //这里编译通过,但是会运行时异常