Kotlin基础篇之内置数据类型与声明变量

一、Kotlin语言声明变量格式

二、内置数据类型

在Kotlin中,基本数据类型在编译为Java字节码时,会根据是否可空和上下文环境转换为对应的Java类型。对于不可空类型(默认情况),Kotlin会优先使用Java的基本类型;若涉及泛型或可空类型(如Int?),则会自动装箱为对应的包装类。以下是题目中列出的Kotlin类型在不可空情况

说明:

  • 不可空类型 ‌:直接映射为Java的基本类型(如intfloat等),无需装箱,性能更优。

  • 可空类型或泛型 ‌:自动装箱为Java的包装类(如IntegerFloat等),因为泛型在JVM中不支持基本类型。

  • String ‌:始终对应Java的String类,因为它本身是引用类型,无需装箱。

kotlin 复制代码
val a: Int = 42       // 对应 Java: int a = 42
val b: Int? = 42      // 对应 Java: Integer b = 42
val list: List<Int>   // 对应 Java: List<Integer>

三、var 变量和 val 只读变量

3.1 主要区别

具体规则与示例

val 的不可变性
  • 对象引用不可变 ‌:val 变量的引用地址不可变,但对象内部的属性可能可变。
scss 复制代码
val list = mutableListOf(1, 2, 3)
list.add(4)         // ✅ 允许(修改对象内容)
list = mutableListOf() // ❌ 编译错误(不可重新赋值)
  • 编译时常量 ‌:若需定义编译时常量,需用 const val(仅支持基本类型和 String):

const val PI = 3.1415 // 必须位于顶层或 object 中

var 的可变性
  • 允许重新赋值‌:
ini 复制代码
var count = 0
count = 42          // ✅ 允许
  • 类型推断‌:需确保类型一致:
ini 复制代码
var name = "Kotlin"
name = 42          // ❌ 编译错误(类型不匹配)

3.2 使用场景

优先使用 val 的情况
  • 避免意外修改 ‌:
    默认使用 val,确保变量仅在必要时才可变。

val user = getUser()// 后续无法意外修改 user 的引用

  • 函数式编程 ‌:
    不可变变量更契合纯函数和链式调用。

val filteredList = list.filter { it > 0 }.map { it * 2 }

  • 并发编程 ‌:
    减少共享可变状态,简化多线程同步。

val result = runBlocking { asyncTask() } // 结果不可变

必须使用 var 的情况
  • 状态变化 ‌:
    如计数器、UI 组件的可见性等需要动态更新的场景。
kotlin 复制代码
var isLoading = false
fun loadData() {
    isLoading = true
    // 发起网络请求...
}

循环控制 ‌:

forwhile 循环中修改循环变量。

css 复制代码
for (var i in 0..10) { 
/* Kotlin 的 for 循环默认用 val,此处仅为示例 
*/ }
相关推荐
帅帅的记忆1 小时前
uniapp项目调用原生android studio的sdk文件(即aar文件)
android·uni-app·android studio
用户69371750013842 小时前
Kimi K3 综合能力处于全球第一梯队
android·前端·后端
阿pin2 小时前
Android随笔-BroadcastReceiver
android·broadcast
pengyu3 小时前
【Kotlin 协程修仙录 · 金丹境 · 后阶】 | 异常防火墙:supervisorScope 与异常隔离的终极奥义
android·kotlin
cheng2191014 小时前
Cocos Creator打包安卓并支持 Android 16KB 页面大小
android
夏沫琅琊4 小时前
Jetpack Compose + 原生 PDF API 从零搭一个 Android 工具应用 (一)
android·pdf·kotlin
聚美智数5 小时前
常见疾病查询-疾病症状—疾病介绍-疾病大全-疾病治疗查询API接口介绍
android·java·数据库
私人珍藏库14 小时前
[Android] 会计快题库 -财会职称考试刷题学习
android·人工智能·学习·app·软件·多功能
安卓修改大师20 小时前
安卓修改大师 vs MT管理器:反编译工具终极对决与全景解析
android·人工智能·机器翻译
程序员小八77721 小时前
从 0 学习 MySQL 索引——7 大核心精讲
android·学习·mysql