变量声明格式 :
变量定义关键字 变量名 : 变量类型 = 变量值
实际示例 :
var number : Int = 0
var
number
Int
=
0
代码示例 :
fun main() {
var number: Int = 0
println(number)
}
执行结果 :
使用 var
关键字 , 可以 声明一个可修改的变量 ;
使用 val
关键字 , 可以 声明一个只读变量 , 该变量第一次赋值后 , 不允许修改 ;
如果一个 var
类型的可修改变量 , 再初次赋值后 , 在整个生命周期内没有进行修改 , Kotlin 会建议将该变量使用 val
进行修饰 ;
提示如下信息 :
Variable is never modified and can be declared immutable using 'val'
将 var number: Int = 0
修改为 val number: Int = 0
后 , 也就是将 可修改变量 修改为 只读变量 , 执行结果如下 :
声明变量时 并指定了变量的具体类型 , 如果对变量再进行赋值 , 会提示
Explicitly given type is redundant here
警告信息 , 下图中 val number: Int = 0
代码中的 Int
类型是灰色的 , 说明该声明是没必要的 ;
选择 " Remove explicit type specification " 移除显示的类型声明 选项 , 可以将 Int
类型声明移除 ;
最终代码如下 :
fun main() {
val number = 0
println(number)
}
执行结果 : 此时代码没有任何警告 , 是 Kotlin 官方推荐的代码 ;
编译时常量 是在 编译阶段 进行赋值的 ;
函数 在 编译时不会被调用 , 在运行时才会调用 , 因此 编译时常量 必须在 函数之外 进行声明和赋值 ;
编译时常量 类型 : 编译时常量只能是如下几个基本数据类型 , 不能是其它类型 ;
编译时常量 声明格式 :
const val 常量名 = 常量值
代码示例 :
const val COUNT = 100
fun main() {
val number = COUNT
println(number)
}
执行结果 :
在上一个章节 , 使用 const val COUNT = 100
代码定义了一个编译时 常量 , 下面通过分析 Kotlin 字节码数据 , 分析该编译时常量信息 ;
连按两下 Shift 键 , 弹出搜索框 ,
在搜索框中搜索 " Show Kotlin ByteCode " , 然后进入到该选项 ,
此时 , 在右侧就会同时显示该 Kotlin 文件的字节码信息 , const val COUNT = 100
对应的字节码信息是 public final static I COUNT = 100
;
Java 中存在 基本数据类型 与 引用类型 ,
在 Kotlin 中 , 只有 引用数据类型 , 没有 基本数据类型 ;
在编译时 , 编译器 会将 Kotlin 中与 Java 基本数据类型相对应 的类型 自动转为 基本数据类型 , 这样可以提高执行效率 ;
如下图中 , Kotlin 中的 val number: Int = COUNT
只读变量 是 Kotlin 中的 Int
引用类型 , 但是在 字节码文件中 , 对应的字节码为 LOCALVARIABLE number I L1 L6 0
, 其中 I
表示 Java 中的 基本数据类型 int
;