当前位置: 首页 > news >正文

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.gsyq.cn/news/105454.html

相关文章:

  • 基于SpringBoot框架的房产交易服务平台的设计与实现(源码+lw+远程部署)
  • STL deque 的详细特征
  • 从关系型数据库到时序数据库的思维转变
  • 网络安全论坛、会议
  • C#+VisionMaster联合开发控件篇(六)_参数配置控件
  • C#+VisionMaster联合开发控件篇(六)_参数配置控件
  • 【Dify解惑】如何在 Dify 中实现“来源可追溯”:回答里自动附带引用文档和段落?
  • 写论文软件终极对决:宏智树AI如何用“硬核功能”碾压全场?
  • 考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】附Matlab代码
  • 【问题】--Todesk相关问题
  • 别让AI Agent把你送进局子!开发者必看的法律合规避坑指南
  • SMB、FTP、MySQL... 配置不当,即是漏洞
  • idea2025.3最新版永久激活教程
  • 高压直流输电Matlab仿真模型:LCC-HVDC 500kv与800kv电压等级下的控制切换仿真
  • 32 低功耗模式(睡眠 停机 待机 )
  • 如何选择适合企业的代理记账公司?——小企业的财务管理故事
  • 【毕业设计】基于Java+SpringBoot+Vue的非物质文化遗产数字化传承网站基于springboot非物质文化遗产数字化传承(源码+文档+远程调试,全bao定制等)
  • Java毕设选题推荐:基于Java+SpringBoot+Vue校园菜鸟驿站管理系统基于Java Web的校园菜鸟驿站管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 深入解析:LeetCode 51 - N皇后问题 详解笔记
  • 【毕业设计】基于springboot高校洗浴管理系统(源码+文档+远程调试,全bao定制等)
  • Java毕设选题推荐:基于SpringBoot+Vue非物质文化遗产数字化传承网站基于springboot非物质文化遗产数字化传承【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2025年主流GEO服务商全景指南:助力企业抢占AI平台流量红利 - 品牌2025
  • 豆包 AI 手机登录微信被「踢下线」,原因为何?端侧 AI 与头部应用的生态兼容上存在哪些挑战?
  • 异常机制
  • Java毕设选题推荐:基于Java的工资管理系统基于springboot工资管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Week8
  • leetcode 754. Reach a Number 到达终点数字-耗时100%
  • 豆包手机助手技术预览版发布,AI直接嵌入操作系统底层有何意义?会对行业产生什么影响?
  • 【Agent】MemOS 源码笔记---(5)---记忆分类
  • JSON 与 MongoDB:直存对象的便利与隐性代价