标签: Kotlin 变量 属性 var与val区别 自定义属性访问器 智能类型推断
目录:
- 一、Kotlin与Java中变量和常量使用异同
- 二、Kotlin的变量和常量用法
- 三、Kotlin的自定义属性访问器
- 四、Kotlin中的var和val区别
- 五、Kotlin中val不可变与可读的讨论
简述:
Kotlin基础系列第二篇,之前记得有过第一篇算是Kotlin的基础语法的入门篇,把kotlin的基本语法规范,基础内容都过了一遍。接下来就是一一详解。这讲所说的是Kotlin的变量,主要会对以下内容做介绍:
1、变量基本定义
2、var和val的区别
3、智能类型推断
4、自定义属性访问器
5、var是可变的而val一定是不可变的吗
一、Kotlin与Java中变量和常量 使用对比
-
1、在Java中定义一个变量和常量
public String name = "Mikyou";//定义变量 public final int age = 18;//final定义常量
-
2、在Kotlin中定义一个变量和常量
var name: String = "Mikyou" val age: Int = 18
或者
var name = "Mikyou" val age = 18
总结: 由以上的对比可得出几个点
1、Kotlin定义一个变量和常量比Java更简洁和灵活
2、Kotlin中拥有类型推断的机制,当一个变量或者常量初始化的时候可以省略类型的声明,它会根据初始化值的类型来作为变量的类型。
3、Kotlin声明变量和常量都必须使用var(变量),val(常量)关键字开头,然后再是名称,最后才是类型(如果有初始化值类型可以直接省略)
4、Kotlin相比Java默认的访问修饰符是public,而Java中是default
5、Java中一般都是以类型开头然后再是名称,并且类型是不可以省略的;这样的操作在Kotlin中是不行的。因为在Kotlin中类型是可以省略的,也就是类型相对比较弱化的,所以Kotlin会把类型放在最后,一般含有初始化值就会把在后面的类型声明省略。
二、Kotlin的变量和常量用法
var name: String = "Mikyou"
var address: String?//如果这个变量没有初始化,那么需要显示声明类型并且指明类型是否可null
address = "NanJing"
val age: Int = 18
或者
var name = "Mikyou"
val age = 18
- 1、变量和常量声明必须以“var”和“val”关键字开头。
- 2、 变量和常量的结构: (var 或者 val) 名称 :(分割逗号) 变量类型 = 初始化值。
- 3、 智能类型转换(编译器提示为smart cast),如果变量或常量含有初始值可以省略类型,编译器会默认分析出将初始化值的类型作为变量和常量类型。
- 4、如果变量没有初始化,那么需要显示声明类型并且需要指明类型是否可null。
三、Kotlin的自定义属性访问器
在Kotlin中属性是头等特性,它习惯于用一个属性去替代Java中的字段和setter,getter方法。而Kotlin中的set、get访问器相当于Java中的setter,getter方法。Kotlin有个新的特性就是可以去定义一个类中属性的访问器包括setter,getter访问器。该特性十分适用于需要经过多个属性逻辑计算得出的一个新的属性。那么逻辑计算的过程操作不需要像Java一样开一个方法来实现。可以直接在属性访问器中进行逻辑运算。
-
1、自定义get属性访问器
在Java中实现:
pu