Kotlin变量和属性

基本类型

数字类型中不会自动转型,例如,你不能给Double变量分配一个Int。如果必须分配,就需要给Int做一个类型转换。

举例
举例

字符不能作为一个数字类处理,如果需要,要先转换成Int类型来操作。

字符型作为数字使用

位运算

java中我们使用 |  和& 来表示“或”和“并且”。kotlin中我们使用  or  和  and  来表示“或”和“并且”。

声明变量的时候要写明类型,但也不是必须这样。

val a=12           这样编译器也可以推断出a的类型。

一个字符串可以像数组那样访问,并且可以被迭代

Kotlin变量和属性_第1张图片
字符串像数组那样被使用

变量

变量有可变(var)和不可变(val)变量两种。val变量和java种的final很相似。

不可变变量意味着它在实例化之后就不能再去改变他的状态了,这让编码更加健壮和预估性。可变变量,在任何地方都可以访问这个变量对象的代码,并修改它,可能会影响程序的其他地方。

不可变变量也可以说是线程安全的,因为他无法去改变,也不需要去定义访问控制,因为所有线程访问的对象都是同一个。

尽可能的使用val。

属性

kotlin种的属性的定义和使用更为简单。

Kotlin变量和属性_第2张图片
java中的实体类以及访问
Kotlin变量和属性_第3张图片
省去get和set方法

如果没有指定,属性会默认使用getter和setter,当然你也可以将其修改为自定义的代码。

Kotlin变量和属性_第4张图片
自定义的get和set方法

如果需要在getter和setter中访问这个属性自身的值,它需要创建一个 backing field。可以使用field这个预留的字段来访问,他会被编译器找到正在使用的并自动创建,需要注意的是,如果我们直接调用了属性,那我们会使用setter和getter而不是直接访问这个属性。backing field只能在属性访问器内访问。

当操作java代码时,kotlin将允许使用属性的语法去访问在java文件中定义的getter/setter方法。编译器会直接找到它最原始的getter/setter方法。所以当我们直接访问属性的时候不会有性能开销。

你可能感兴趣的:(Kotlin变量和属性)