当前位置: 首页 > 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.cnnetsun.cn/news/70017.html

相关文章:

  • 整体设计 之28 整体设计 架构表表述总表的 完整程序(之27 的Q268 )(codebuddy)
  • 云手机 实体手机的云端延伸
  • 交换机和网卡的 PFC 机制工作原理与实例解析
  • UI自动化测试常见面试题
  • Linux OOM 问题之 DMSERVER 受害者
  • Flutter引擎裁剪与鸿蒙方舟编译协同优化
  • STM32CubeMX的main.c开头介绍
  • 26.MPSOC FPGA linux读AHT20传感器
  • 嵌入式系统时序图完全指南:从原理到实战
  • 小团队与大团队的管理差异
  • [CISCN2019 华东南赛区]Web4
  • AI编程革命!Claude Skills大揭秘:小白也能快速上手的Agent开发神器,大模型开发者必看!
  • 内点法求最优潮流附matlab代码
  • 三相PWM整流器有限集模型预测电流控制附Simulink仿真模型
  • 光伏四可“可观”功能:光伏电站全景数字化的底层支撑技术
  • 如何用FLUX.1-dev镜像在本地部署下一代AI绘画模型?
  • 基于 Comsol 移动网格方法的激光熔池流动数值模拟
  • BLDC无刷直流电机Matlab仿真:转速电流双闭环控制及有感无感换相方式研究
  • [光学原理与应用-491]:水冷机、零气模块CDA、功率计等影响266皮秒紫外激光器的种子源1064nm功率稳定性结果的主要因素有哪些?
  • 昆仑通态MCGS与欧姆龙E5CC温控器通讯实战:PID模式及输出启停控制
  • 通达信〖逆势突破强牛〗指标公式 逆市环境中率先突破前期重要压力位 较强内在上涨动力
  • 基于扰动观测器的永磁同步电机(PMSM)模型预测控制(MPC)仿真探索
  • AEB联合仿真算法设计:Carsim2019.0+Matlab/Simulink2021a实现...
  • Java毕设选题推荐:基于springboot个人博客系统的设计与实现基于SpringBoot+Vue个人博客系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot停车场车位预约系统基于Java springboot停车场管理系统停车位预约【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot的无人化、线上化、数据化海洋馆预约系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Ascend C高级API应用:InitGlobalMemory与Pad操作的底层原理
  • Java毕设选题推荐:基于Java Web的新能源汽车信息咨询服务基于SpringBoot+Vue的新能源汽车信息咨询服务的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:OPA 集成指南:从原理到实践
  • Object.defineProperty和Proxy实现拦截的区别