KotlinKotlin 变量与常量 ( 变量声明 | 只读变量 | 类型推断 | 编译时常量 | Kotlin 字节码查看面板 | Kotlin 引用数据类型 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KotlinKotlin 变量与常量 ( 变量声明 | 只读变量 | 类型推断 | 编译时常量 | Kotlin 字节码查看面板 | Kotlin 引用数据类型 )相关的知识,希望对你有一定的参考价值。
文章目录
一、变量声明
变量声明格式 :
变量定义关键字 变量名 : 变量类型 = 变量值
实际示例 :
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 官方推荐的代码 ;
四、编译时常量
编译时常量 是在 编译阶段 进行赋值的 ;
函数 在 编译时不会被调用 , 在运行时才会调用 , 因此 编译时常量 必须在 函数之外 进行声明和赋值 ;
编译时常量 类型 : 编译时常量只能是如下几个基本数据类型 , 不能是其它类型 ;
- Boolean
- Char
- Byte
- Short
- Int
- Long
- Float
- Double
- String
编译时常量 声明格式 :
const val 常量名 = 常量值
代码示例 :
const val COUNT = 100
fun main()
val number = COUNT
println(number)
执行结果 :
五、Kotlin 字节码查看面板
在上一个章节 , 使用 const val COUNT = 100
代码定义了一个编译时 常量 , 下面通过分析 Kotlin 字节码数据 , 分析该编译时常量信息 ;
连按两下 Shift 键 , 弹出搜索框 ,
在搜索框中搜索 " Show Kotlin ByteCode " , 然后进入到该选项 ,
此时 , 在右侧就会同时显示该 Kotlin 文件的字节码信息 , const val COUNT = 100
对应的字节码信息是 public final static I COUNT = 100
;
六、Kotlin 引用数据类型
Java 中存在 基本数据类型 与 引用类型 ,
- 基本数据类型 存放在 栈内存 中 ;
- 引用类型 存放在 堆内存 中 ;
在 Kotlin 中 , 只有 引用数据类型 , 没有 基本数据类型 ;
在编译时 , 编译器 会将 Kotlin 中与 Java 基本数据类型相对应 的类型 自动转为 基本数据类型 , 这样可以提高执行效率 ;
如下图中 , Kotlin 中的 val number: Int = COUNT
只读变量 是 Kotlin 中的 Int
引用类型 , 但是在 字节码文件中 , 对应的字节码为 LOCALVARIABLE number I L1 L6 0
, 其中 I
表示 Java 中的 基本数据类型 int
;
以上是关于KotlinKotlin 变量与常量 ( 变量声明 | 只读变量 | 类型推断 | 编译时常量 | Kotlin 字节码查看面板 | Kotlin 引用数据类型 )的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:多个变量的初始化声明与赋值
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:单个变量的声明与赋值
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:常量的初始化定义
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:常量的初始化规则与枚举
KotlinKotlin 与 Java 互操作 ① ( 变量可空性 | Kotlin 类型映射 | Kotlin 访问私有属性 | Java 调用 Kotlin 函数 )