kotin基础语法汇总

变量声明

Kotlin 中使用valvar声明变量,val表示不可变变量(类似 Java 的final),var表示可变变量。

valname:String="Kotlin"// 不可变varage:Int=10// 可变

类型可以省略,编译器会自动推断:

vallanguage="Kotlin"// 自动推断为 Stringvarscore=95// 自动推断为 Int

基本数据类型

Kotlin 的基本数据类型包括:

  • 整数:ByteShortIntLong
  • 浮点数:FloatDouble
  • 布尔:Boolean
  • 字符:Char
  • 字符串:String
valnum:Int=42valpi:Double=3.14valisTrue:Boolean=truevalletter:Char='A'valtext:String="Hello"

条件控制

if表达式可以直接返回值:

valmax=if(a>b)aelseb

when表达式替代了switch,功能更强大:

when(x){1->print("x is 1")2->print("x is 2")else->print("x is neither 1 nor 2")}

循环结构

for循环遍历集合或范围:

for(iin1..5){// 1 到 5println(i)}for(iin1until5){// 1 到 4println(i)}for(iin5downTo1){// 5 到 1println(i)}valnames=listOf("Alice","Bob","Carol")for(nameinnames){println(name)}

whiledo-while循环:

while(x>0){x--}do{println(x)x--}while(x>0)

函数定义

使用fun关键字定义函数:

fungreet(name:String):String{return"Hello,$name!"}// 单表达式函数可以简写funsquare(x:Int)=x*x

函数参数可以有默认值:

fungreet(name:String="World"){println("Hello,$name!")}

类和对象

类定义:

classPerson(valname:String,varage:Int){fungreet(){println("Hi, I'm$name")}}

创建对象:

valperson=Person("Alice",25)person.greet()

空安全

Kotlin 的类型系统区分可空和非空类型:

vara:String="abc"// 非空a=null// 编译错误varb:String?="abc"// 可空b=null// 允许

安全调用操作符?.

vallength=b?.length// 如果 b 为 null,返回 null

Elvis 操作符?:提供默认值:

vallength=b?.length?:0// 如果 b 为 null,返回 0

集合操作

Kotlin 提供丰富的集合操作:

valnumbers=listOf(1,2,3,4,5)valdoubled=numbers.map{it*2}// [2, 4, 6, 8, 10]valeven=numbers.filter{it%2==0}// [2, 4]valsum=numbers.reduce{acc,num->acc+num}// 15

扩展函数

可以为现有类添加新函数:

funString.addExclamation()="$this!"println("Hello".addExclamation())// 输出: Hello!

数据类

数据类自动生成toString()equals()hashCode()等方法:

dataclassUser(valname:String,valage:Int)valuser=User("Alice",25)println(user)// 输出: User(name=Alice, age=25)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1020794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot框架的房产交易服务平台的设计与实现(源码+lw+远程部署)

目录: 博主介绍: 完整视频演示: 系统技术介绍: 后端Java介绍 前端框架Vue介绍 具体功能截图: 部分代码参考: Mysql表设计参考: 项目测试: 项目论文:​ 为…

卿语霖:在读研究生的AI产品经理转型之路 —— 多元规划,赢取头部企业Offer

一、学员背景 卿语霖,24岁,目前是一名在读研究生,预计2026年毕业。出于对人工智能领域的浓厚兴趣与敏锐观察,她很早就确立了成为AI产品经理的职业目标。2024年10月,在深入了解AIGC课程体系后,她发现该课程与…

交通灯,红绿灯,plc交通灯,十字路口交通灯,三菱PlC程序+GT触摸屏程序+电气接线图+Io分配表

交通灯,红绿灯,plc交通灯,十字路口交通灯,三菱PlC程序GT触摸屏程序电气接线图Io分配表。 , 具体控制功能 1)交通深夜期:东南西北4个方向的红绿灯都不亮,只有4个方向的所有黄灯以1Hz的频率闪烁。 2)交通低峰…

狂中Nature子刊!CNN-LSTM做时间序列预测火力全开,思路非常上头!

在处理兼具局部相关性与长期依赖性的复杂时序数据时,CNN-LSTM是个非常可靠和有效的选择。因为它通过分工协作有效解决了关键矛盾,这方面比单一模型更全面、更稳健。但从创新角度来说,CNN-LSTM做时序预测研究范式已经发生了深刻变化&#xff0…

STL deque 的详细特征

STL deque 的详细特征 基本特性 #include <deque> using namespace std;deque<int> dq; // 声明一个int类型的双端队列 双端队列&#xff1a;允许在两端进行高效插入和删除动态数组&#xff1a;支持随机访问&#xff0c;可以像数组一样通过下标访问内存结构&a…

JavaScript 性能优化实战:从 3 秒到 300 ms 的压缩与缓存之旅 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Git tag标记Qwen-Image-Edit-2509重要版本里程碑

Qwen-Image-Edit-2509&#xff1a;语义级图像编辑的里程碑演进 在电商运营、社交媒体内容生产和品牌视觉管理日益自动化的今天&#xff0c;一个反复出现的挑战是&#xff1a;如何快速、准确地修改已有图像中的局部内容——比如更换商品标签文字、调整产品外观或移除干扰元素&am…

【数据库】MySQL的安装与卸载 - 实践

【数据库】MySQL的安装与卸载 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

GTN损伤模型在金属成型中的实战改造手记

修正的考虑剪切和静水压力的各向异性和各向同性 GTN 模型 Abaqus_Vumat 子程序以及跑通的案例&#xff0c;包括 三个子程序 for 文件&#xff08;各向同性&#xff0c;自己推导修改以及各向异性&#xff09; 、cae 文件和 inp 文件等&#xff0c;还有一些论文资料。 注&#x…

江苏 AI 营销讲师领航者汤羽:以数智之力,赋能品牌破局增长 - 资讯焦点

江苏 AI 营销领航者汤羽:以数智之力,赋能品牌破局增长 在江苏新媒体营销的浪潮中,有一个名字始终闪耀着引领者的光芒 —— 汤羽。她是客户口中亲切的 “汤大大”,更是业界公认的 “AI 赋能营销一姐”。作为迅聚公司…

从关系型数据库到时序数据库的思维转变

一、核心范式转变&#xff1a;从“实体关系”到“时间流事件” 维度关系型数据库 (RDBMS)时序数据库 (TSDB)核心抽象​实体与关系。世界由“学生”、“订单”、“产品”等实体构成&#xff0c;通过外键关联。带时间戳的测量流。世界是持续变化的“指标”&#xff0c;如“CPU温…

C#字典操作与类对象全解析

《字典》字典&#xff1a;包含了key&#xff08;键&#xff09;和value&#xff08;值&#xff09;&#xff0c;简称键值对&#xff0c;键是唯一的&#xff0c;值可以是任意类型的&#xff0c;字典是没有顺序的&#xff0c;只能通过键取值。 创建字典的方法 // Dictionary<…

jwt简介

JWT(Json Web Token),是一种用于在网络上传递信息的开放标准。它是一种轻量级,自包含的令牌,常被用来在客户端和服务器之间传递身份信息 1 相关概念 1.1 MAC(Message Authenticaion Code)消息认证码 简单讲,消息认…

重生归来,我要成功 Python 高手--day44 迁移学习 Fasttext 文本分类 词向量

Fasttext&#xff1a;是一种轻量化的预训练模型&#xff0c;适合文本分类和文本向量化优势&#xff1a;结构简单进行训练词向量的时候由于使用层次softmax结构能够提升模型的训练效率使用n-gram特征提取以弥补模型缺陷提高精度由三层组成&#xff1a;输入层&#xff1a;对文本词…

3D 创作工具 Cinema4D 2025官方下载安装教程(含核心功能+入门实操+常见问题)

目录一、Cinema4D 2025 核心功能详解(新手必看)二、Cinema4D 2025 下载渠道(正规安全)三、Cinema4D 2025 系统要求(安装前必查)四、Cinema4D 2025 详细安装步骤(每步带操作要点)步骤 1:解压安装包(右键解压至…

C#+VisionMaster联合开发控件篇(七)_参数配置带渲染控件

1、概要参数配置控件名为:VmParamsConfigWithRenderControl,用于展示VM流程或者VM模块的参数配置带渲染控件内容。 2、后台代码 // 参数配置带渲染控件 if (moduleNames.Contains("圆查找2"))vmParamsConf…

直播回放 | IDMP 无问智推技术详解

在生产车间、设备集控室、运维指挥中心&#xff0c;每天都有成千上万条数据实时上传&#xff1a;温度、压力、转速、电流……这些数据&#xff0c;被系统精准地记录了下来&#xff0c;也被整整齐齐地存进了数据库。但真正的问题是&#xff1a; &#x1f50d; 谁在关注这些数据…

看到有人说,不要有新的编程语言了

文章讨论了新编程语言是否会因 AI 缺乏训练数据而难以成为主流,作者持相反观点,认为新语言会不断涌现。看到有人说,不要有新的编程语言了 @https://note.mowen.cn/detail/rAuJ3KVRuaZKm6AyWWYBB 他说,新发明的编程…

网络安全论坛、会议

日期 会议、论坛 地点 链接20251122 京东“京麒沙龙第18期AI+移动安全专场” 北京海淀20251210 第十五届网络安全漏洞分析与风险评估大会 天津20251218 字节跳动“AI安全论坛” 上海世博中心20251220 火山引擎、斗象科…

mysql —— Ubuntu —— 第一次登入,如何设置密码

mysql —— Ubuntu —— 第一次登入,如何设置密码参考: https://blog.csdn.net/lonnng2004/article/details/134994186命令: ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY MyNewPass;本博…