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 函数 )

ES6基础入门教程(二)变量和常量