var 可变变量
val 只读变量
相同点:都为推测类型并且都是首次初始化就确定变量类型
区别: var可以多次初始化,val只能初始化一次
特殊情况:
val abc:ArrayList<String> = ArrayList()
Log.w("aaa","size is ${abc.size}")
abc.add("aaa")
Log.w("aaa","size is ${abc.size}")
abc.clear()
Log.w("aaa","size is ${abc.size}")
结果如下:
W/aaa: size is 0
W/aaa: size is 1
W/aaa: size is 0
结论 :val修饰集合的时候,只确定集合类型,而不影响里面的数据多少