【一站式学会Kotlin】第二节 kotlin 的var 和 val变量

2024-05-01 13:20

本文主要是介绍【一站式学会Kotlin】第二节 kotlin 的var 和 val变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者介绍:

百度资深Android工程师T6,在百度任职7年半。
目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。文章底部,csdn有为我插入微信的联络方式,欢迎大家联络我。

一、val 修饰 的是只读变量,类似于java中的final

在Kotlin中,val关键字用来声明只读变量,即变量一旦初始化后,其值就不能被修改。val修饰的变量和Java中的final变量类似,初始化后不能被重新赋值。

val修饰的变量和var修饰的变量在内存中的表现是不同的,但是这主要是针对变量本身的不可变性。即使是val修饰的变量,其引用的对象内容是可以被修改的,只要对象本身是可变的(例如:数组、集合等)。

二、var修饰的是可以改变的变量。

var a:int = 0
a = 10  // 合法

三、案例解析:

val a:int = 0  // 此时是指数值不可变
a=10 // 不合法,val修饰的变量不可以改变
val constantList = mutableListOf(1, 2, 3)// 下面的操作是合法的,因为列表内容是可以变化的
constantList.add(4)// 下面的操作会编译错误,因为val不允许重新赋值
// constantList = mutableListOf(5, 6, 7)

在这个例子中,constantList是一个val变量,它引用的是一个可变列表。即使列表本身是可变的,我们仍然不能让constantList指向其他对象,但是我们可以修改列表中的元素,这不违反了val变量不可变的原则。

四、总结一下(可执行源码下载地址):

如果你说的“内存地址不变”是指变量引用的对象地址不变,那么这种特性是因为val修饰的是变量的引用地址,而不是引用的对象本身。换句话说,一旦val变量被初始化并指向了一个对象,这个变量就不能再指向其他对象,但是对象本身的内容是可以变化的。

源码下载地址:
点击这里,点击这里,点击这里

也可以直接联络作者要源码。

这篇关于【一站式学会Kotlin】第二节 kotlin 的var 和 val变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951802

相关文章

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

kotlin中的数据转换方法(示例详解)

《kotlin中的数据转换方法(示例详解)》这篇文章介绍了Kotlin中将数字转换为字符串和字符串转换为数字的多种方法,包括使用`toString()`、字符串模板、格式化字符串、处理可空类型等,同时... 目录1. 直接使用 toString() 方法2. 字符串模板(自动转换)3. 格式化字符串(控制输

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的