声明常量和只读变量:
常量:
- 运行期常量
用"val"关键词声明,可以在运行的时候赋值(也可以在编译前赋值),只能赋值一次,赋值过后不能再改值
如果类型是引用数据类型,那么可以更改对象里面的属性值,而不能更改对象的内存地址(从新实例化)
- 编译期常量
用"const val"关键词声明,在程序编译前赋值,只能赋值一次,赋值过后不能再改值。
只能用于类的顶层(函数之外)声明或对象中声明,而且只能是基本数据类型。
声明变量:
用"var"关键词声明,变量值可更改,常量赋值后不可更改
使用var还是val:
如果两种变量都能满足需求的条件下,优先使用val
声明变量的数据类型:
类型推导:
类型推导无需声明该变量的数据类型,而是通过赋值自动推导出该变量的数据类型,例如:val level=0,该变量的类型就为int
推荐使用类型推导,而非显式声明变量数据类型。
注意事项:
只要值是整数类型,那么类型都会自动推导为int类型,在特殊情况想把数据类型定为Long,而值又是整数时,可以显式声明变量的数据类型:val level:Long =10
显式设置数据类型:
声明数据类型:
val level:数据类型 =值
用值指定类型:
val level =10L
注意事项:
只有Long类型的值末尾必须是大写,因为小写l容易被误读,其它可以为小写,比如Float可以为10F或10f
变量的命名:
注意事项:
- 首字符可以是下划线或字母,但不能是数字。
- #符号和$符号不可以作为标识符(变量名)。
- kotlin的关键词全部都是小写字母,没有大写字母。
系统关键词:
硬关键词:
不可以声明为变量,除非用`变量名`包裹起来(Table上面的键),一般没人会这样去用,除了面试的人可能会这样去问
as、as?、break、class、continue、do、else、false、for、fun、if、in、!in、interface、is、!is、null、object、package、return、super、this、throw、true、try、typealias、val、var、when、while
软关键词:
在它们的使用场景之外,可以当作变量名来使用
by、catch、constructor、delegate、dynamic、field、file、finally、get、import、int、param、property、receiver、set、setparam、where
修饰符关键词:
在它们的使用场景之外,可以当作变量名来使用
abstract、annotaion、companion、const、crossinline、data、enum、external、final、infix、inner、internal、lateinit、noinline、open、operator、out、override、private、protected、public、reified、sealed、suspend、tailrec、vararg
特定标识符:
在它们的使用场景之外,可以当作变量名来使用
field:
it: