相互模拟各自的功能,大胆的猜测下:也许浏览器内核底层都是同一个方法,只是上层封装出的两个语法糖而已。 语法 两者在语法上极其相似,除 ...

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

固篮坑凶?? 学习目标

了解什么是变量,并学会定义和更新变量

掌握如何为变量选择合适的数据类型

学会在代码中添加注释,提升可读性

什么是变量

在编程中,变量就像一个带标签的盒子,用来存放某个数据值。

标签(变量名):告诉我们盒子里装的是什么

盒子里的值:就是存放的数据

举个例子:

盒子外写着 name(表示名字)

盒子里放着 "Alex"(表示名字的值)

当你想修改名字时,只需替换盒子里的值,而不必修改整个程序。

为什么需要变量

如果在代码中直接写死所有值,程序只能应对特定情况。

使用变量就像写信时使用模板,只需替换不同内容即可应对多种情况:

尊敬的 { name }:

您好!很高兴今天能在 { location } 与您会晤。希望 { date } 还能见到您。

祝您天天好心情!

同样地,在应用中,你可以用变量来代替变化的数据:

?? 用户名:name

?? 地点:location

? 时间:date

这样,应用就能根据不同用户或场景自动生成对应内容,而不需要每次都重新编写逻辑。

??Kotlin 常见数据类型

在定义变量时,需要指定变量能存储的数据类型。Kotlin 提供了丰富的基本类型:

类型分类 数据类型 示例值 说明

整数类型 (整型) Byte 127 8位有符号整数(范围:-128 ~ 127)

Short 32767 16位有符号整数(范围:-32768 ~ 32767)

Int 2147483647 32位有符号整数(范围:-231 ~ 231-1)

Long 9223372036854775807L 64位有符号整数(需以 L 结尾)

浮点类型 Float 3.14f 32位单精度浮点数(需以 f 结尾)

Double 3.1415926 64位双精度浮点数(默认浮点类型)

字符类型 Char 'A' 单个字符,使用单引号包裹

布尔类型 Boolean true / false 逻辑真值类型

字符串类型 String "Hello" 字符序列,可用 """ 创建多行字符串

数组类型 Array arrayOf(1, 2, 3) 可存储任意类型的元素

集合类型 List listOf("A", "B") 不可变列表

MutableList mutableListOf(1, 2, 3) 可变列表

Set setOf("A", "B") 不可变集合(自动去重)

MutableSet mutableSetOf("A", "B") 可变集合

Map mapOf("key" to "value") 不可变键值对集合

MutableMap mutableMapOf("k" to "v") 可变键值对集合

空类型 Any 任意类型值 Kotlin 所有类的超类

Unit Unit 表示无返回值(相当于 Java 的 void)

Nothing - 表示不会返回(如抛异常的函数)

可空类型 String?, Int? 等 null 允许存储 null 值的类型

?? 变量类型实际使用示例

地图应用

?? 地点名称:String

? 星级评分:Double

?? 评论数量:Int

?? 是否收藏:Boolean

视频应用

?? 视频标题:String

?? 频道名称:String

?? 播放次数:Int

?? 定义变量

定义变量的语法如下:

val 变量名: 数据类型 = 初始值

定义变量语法

示例:

fun main() {

val count: Int = 2

println(count)

}

输出结果:

2

提示:

val 表示不可变变量(定义后不能修改值)

var 表示可变变量(定义后可重新赋值)

类型推断

如果 Kotlin 能根据初始值判断类型,则可以省略类型声明:

val count = 2 // 自动推断为 Int

若未赋初始值,必须明确指定类型:

val count: Int //但直接这样写,会报错,要用后面讲解的其他只是修复

使用变量与字符串模板

要在字符串中插入变量值,可使用 字符串模板:

fun main() {

val count = 10

println("You have $count unread messages.")

}

输出:

You have 10 unread messages.

${} 可在字符串中放入表达式,例如:

println("Total: ${5 + 3}")

基本数学运算

整数变量可以直接参与运算,例如加减乘除:

fun main() {

val unreadCount = 5

val readCount = 100

println("You have ${unreadCount + readCount} total messages.")

}

输出:

You have 105 total messages.

4. 更新变量

在应用程序运行时,可能需要更新变量的值。例如购物车总金额会随用户操作而变化。

val 与 var

val:只读变量,值不可更改。

var:可变变量,值可更新。

示例:

fun main() {

var cartTotal = 0 // 声明可变变量

println("Total: $cartTotal")

cartTotal = 20 // 更新变量值

println("Total: $cartTotal")

}

输出:

Total: 0

Total: 20

增量运算符和减量运算符

可以使用表达式更新变量,例如增加或减少值:

fun main() {

var count = 10

println("You have $count unread messages.")

count = count + 1 // 增加 1

println("You have $count unread messages.")

count++ // 使用增量运算符,等同于 count = count + 1

println("You have $count unread messages.")

count-- // 使用减量运算符,等同于 count = count - 1

println("You have $count unread messages.")

}

You have 10 unread messages.

You have 11 unread messages.

You have 12 unread messages.

You have 11 unread messages.

提示:只有在变量值会发生变化时使用 var,否则优先使用 val 以保证代码安全。

其他数据类型

Double

用于存储小数,精度比 Float 高。

示例:

fun main() {

val trip1 = 3.20

val trip2 = 4.10

val trip3 = 1.72

val totalTripLength = trip1 + trip2 + trip3

println("$totalTripLength miles left to destination")

}

输出:

9.02 miles left to destination

String

用于存储文本,用双引号包裹。可通过 + 进行字符串拼接。

fun main() {

val nextMeeting = "Next meeting: "

val date = "January 1"

val reminder = nextMeeting + date + " at work"

println(reminder)

}

输出:

Next meeting: January 1 at work

字符串中使用引号需要转义:

fun main() {

println("Say \"hello\"")

}

输出:

Say "hello"

Boolean

只有两个可能值:true 或 false。常用于表示开关状态或条件判断。

fun main() {

val notificationsEnabled = false

println(notificationsEnabled)

println("Are notifications enabled? " + notificationsEnabled)

}

输出:

false

Are notifications enabled? false

编码规范

在 Kotlin 中,建议遵循以下编码规范,这是 Google 推荐使用并且其他专业开发者也在遵循的一种 Android 代码统一编写方式:

变量命名

使用 驼峰命名法(camelCase),以小写字母开头。

val discount: Double = 0.20

类型声明空格

冒号后添加一个空格。

val discount: Double = 0.20

运算符空格

赋值运算符 =

加号 +、减号 -、乘号 *、除号 / 前后都应有空格。

var pet = "Dog"

val sum = 1 + 2

行长度

每行代码建议不超过 100 个字符,方便阅读和维护。

在代码中添加注释

编写代码时,建议使用注释说明代码用途,帮助读者理解。

单行注释

使用 //,通常在符号后添加一个空格:

// 这是一个注释

height = 1 // 假设初始高度为 1

多行注释

使用 /* ... */,适合超过 100 个字符的长注释:

/*

* 这是一个很长的注释

* 可以占用多行,只需要开始和结束,中间的*是为了好看写的

*/

示例:单行注释与多行注释结合

/*

* 该程序显示用户收件箱中的消息数量

*/

fun main() {

// 创建一个变量表示未读消息数量

var count = 10

println("You have $count unread messages.")

// 将消息数量减少 1

count--

println("You have $count unread messages.")

}

?? 提示:在常见的编辑器中输入注释时,IDE 会提供自动提示和快捷键支持,帮助你快速书写注释。注释里面的*不需要手动写完,编辑器会自动生成,后面章节会详细讲解。现在主要是让大家了解注释的作用。

总结

做得很好!您已经了解了 Kotlin 中的变量及其用途,掌握了如何创建、更新和使用变量,尝试了不同的基本数据类型(Int、Double、String、Boolean),并了解了 val 与 var 的区别。

核心要点

变量是存储单项数据的容器。

必须先声明变量,才能使用。

val 用于定义只读变量,一旦赋值不可更改。

var 用于定义可变变量,可以更新值。

Kotlin 中建议尽可能使用 val。

变量声明示例:val count: Int = 2

类型推断:提供初始值时可省略数据类型。

常见基本类型:Int、Double、String、Boolean、Float。

更新变量使用赋值运算符 =

只有 var 声明的变量才能被更新。

增量运算符 ++ 用于加 1,减量运算符 -- 用于减 1。

可用于字符串拼接,也可将其他类型(如 Int、Boolean)拼接到字符串。

遗传算法实战进阶:从能跑通到稳收敛的五大关键设计 遗传算法(GA)作为经典启发式优化方法,其核心价值不在于模拟生物进化,而在于构建一种可控、可诊断、可干预的智能搜索系统。理解选择、交叉、变异三大算子的协同机制与反馈本质,是突破早熟收敛、结果震荡、不可行解泛滥等工程瓶颈的前提。适应度函数需从静态评分器升级为动态导航仪,通过可微趋势设计、自适应缩放与软约束建模提升鲁棒性;算子参数(如锦标赛规模k、交叉概率Pc、自适应变异率)必须依据问题特征(维度、多峰性、约束强度)联合校准,而非孤立设定。这些原理直接支撑工业级GA在路径规划、参数调优、排班调度等场景中实现稳定 阅读详情

相关推荐

【信息科学与工程学】【研发体系】第十篇 半导体电路设计 126 光学光刻、计算光刻 第一部分

用于全芯片修正的快速三维掩模近似模型(边界层模型、薄掩模近似改进)。:用于模型校准的测试图形设计(包含各种宽度、间距、方向的图形);扫描电镜、光学散射仪等量测数据的处理与模型拟合;模型误差的分解与追踪;:反演光刻技术的数学框架与求解算法(梯度法、像素翻转、水平集法);基于模型的OPC中边缘放置误差片段的智能移动策略;热点检测与分类的深度学习模型;:交替型、衰减型、无铬型等不同类型PSM的原理、制造与应用;光刻胶模型与显影模型的建立与校准。扫描电镜、散射仪等量测数据的处理与模型拟合;:厚掩模的电磁场仿真;

weixin_49199313的博客 1026

Web前端入门:JavaScript 中 setInterval 和 setTimeout 细节

定时器是个好东西,但细节也很多,稍不注意就会现流程错误,所以在使用时还是需要仔细斟酌~~setInterval 和 setTimeout 没有绝对的应用场景,两者在使用上都可以互相模拟,只是编写代码量的多少而已。前端路引from=001YH。

dsgdauigfs的博客 645

AI-basic.xmind

AI-basic

Web前端入门第 87 问:JavaScript 中 setInterval 和 setTimeout 细节

setInterval 和 setTimeout 两者都是用于控制 JS 函数延迟执行,但是在执行机制和用途上还是有点儿差异。 虽然说两者功能上有区别,但在使用上却可以相互模拟各自的功能大胆猜测下:也许浏览器内核底层都是同一个方法,只是上层封装两个语法糖而已。 语法 两者在语法上极其相似

cmdos的专栏 51

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

YunWisdom 125

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 875

Python 串口日志采集与滚动保存工具(嵌入式开发+Python/串口+日志采集源码+设备运行记录)

提供带 UTC 时间戳的十六进制收包记录、按文件大小滚动保存及可选断线重连。面向开发板调试和长时间运行记录;每条记录对应一次 read 得到的数据块,不保证与协议帧或文本行一一对应。 适用于嵌入式软件开发人员、驱动开发入门者及相关技术学习者。资源包含源码或模板、使用说明及验证范围说明。Python 3.10+;pyserial 3.5;Windows 或 Linux;具备串口访问权限。 功能边界见 README.md,实际验证情况见 TESTING.md。

无线充电程序-下载即用.zip

代码下载链接: https://pan.quark.cn/s/37189d21223e STM8S103F3属于STMicroelectronics公司研发的STM8S系列微控制器,该芯片在众多嵌入式系统设计中得到普遍应用,尤其是在对低能耗与高性能有较高要求的场景中。这款微控制器内置8位中央处理器,配备了完整的数字信号处理工具集,涵盖了定时器单元、串行通信端口以及多种外部设备接口。 无线供电方案是基于STM8S103F3构建的,其核心目标在于达成无需物理接触的电能传输。这项技术主要运用电磁感应理论,借助发送端与接收端线圈间磁场的变化来实现能量传递。在无线供电架构中,STM8S103F3通常担任控制核心的角色,负责监督并调节充电环节中的各项指标,以此确保操作安全并提升工作效率。 1. **ADC(模拟数字转换器)**:在无线供电系统中,ADC负责将探测到的电压或电流信号转换为数字形式,使微控制器能够进行解析与操控。例如,它可用于测量接收端线圈的电压值,借此评估充电状况及效能。 2. **PWM(脉宽调制)**:PWM是调控电源输的常用手段,通过变更脉冲宽度来控制平均功率输。在无线供电系统中,PWM或许会用于调节发射端功率的输水平,以应对不同的充电需求及距离差异。借助精准控制PWM信号,能够维持充电电流的稳定,进而保障设备安全进行充电。 3. **软件体系**:无线供电方案可能由多个组成部分构成,例如初始设定、异常识别、通信规约处理等。这些组件通过周密规划的架构协同运作,共同完成无线供电的全部功能。 4. **安全功能**:方案可能集成过温、过压、过流防护机制,一旦侦测到非正常情形,可自动中断电源供应或降低功率输,以避免设备受损。 5. **通信规约**:无...

如何推动区域产业智能化升级,提升园区企业智能制造水平?.docx

如何推动区域产业智能化升级,提升园区企业智能制造水平?

上一篇: 理解 Linux 系统中的熵(Entropy)
下一篇: WeakMap 应用场景与示例
哥到此游
博客等级 码龄1年 0粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值