定义变量
var 变量名=初始化值
var 变量名:数据类型=初始化值
(1)定义变量的时候需要初始化(抽象字段除外)
(2)定义变量的时候可以不指定变量的数据类型,系统会根据变量的初始化值推断变量的数据类型;
var a=1
一旦确定类型后,则不可改变,比如已经确认a是Int类型,则不可以为其赋值10.9
定义常量
val 常量名=初始化值
val 常量名:数据类型=初始化值
注意:val修饰的常量,相当于java中final修饰的变量,就是常量。
val修饰的变量,如果类型是值类型(相当于java的基本数据类型:int double等八大类型),值是不可以修改的。
但是var修饰的值是可以修改的。
val如果修饰的类型是引用类型,引用不可变,引用的内容可变。
val a1=Array(1,2,3)
val a2=Array(2,3,4)
a1=a2//不可以,引用不可变
a1(0)=10//可以,引用的内容可变
val修饰的变量,如果还使用lazy修饰,则可以在使用的时候再赋值。
lazy只能修饰val变量,不可以修饰var变量。
变量是选择val还是var?
官方推荐val
(1)值不可变,可读性更强
(2)值不可变,更安全
(3)垃圾回收的时候可以被更快的回收