当前位置: 首页 > 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.jsqmd.com/news/94864/

相关文章:

  • 基于SpringBoot框架的房产交易服务平台的设计与实现(源码+lw+远程部署)
  • 卿语霖:在读研究生的AI产品经理转型之路 —— 多元规划,赢取头部企业Offer
  • 交通灯,红绿灯,plc交通灯,十字路口交通灯,三菱PlC程序+GT触摸屏程序+电气接线图+Io分配表
  • 狂中Nature子刊!CNN-LSTM做时间序列预测火力全开,思路非常上头!
  • STL deque 的详细特征
  • JavaScript 性能优化实战:从 3 秒到 300 ms 的压缩与缓存之旅 - 教程
  • Git tag标记Qwen-Image-Edit-2509重要版本里程碑
  • 【数据库】MySQL的安装与卸载 - 实践
  • 【Dify解惑】如何在 Dify 中实现“来源可追溯”:回答里自动附带引用文档和段落?
  • GTN损伤模型在金属成型中的实战改造手记
  • 【问题】--Todesk相关问题
  • 江苏 AI 营销讲师领航者汤羽:以数智之力,赋能品牌破局增长 - 资讯焦点
  • 江苏 AI 营销讲师领航者汤羽:以数智之力,赋能品牌破局增长 - 资讯焦点
  • 从关系型数据库到时序数据库的思维转变
  • C#字典操作与类对象全解析
  • jwt简介
  • 重生归来,我要成功 Python 高手--day44 迁移学习 Fasttext 文本分类 词向量
  • 3D 创作工具 Cinema4D 2025官方下载安装教程(含核心功能+入门实操+常见问题)
  • C#+VisionMaster联合开发控件篇(七)_参数配置带渲染控件
  • 直播回放 | IDMP 无问智推技术详解
  • 看到有人说,不要有新的编程语言了
  • 人工智能数据投毒风险上升:企业必须重视的 AI 安全隐患 - 资讯焦点
  • 高压直流输电Matlab仿真模型:LCC-HVDC 500kv与800kv电压等级下的控制切换仿真
  • 网络安全论坛、会议
  • mysql —— Ubuntu —— 第一次登入,如何设置密码
  • C#+VisionMaster联合开发控件篇(六)_参数配置控件
  • Linux系统编程——进程进阶:exec 族、system 与工作路径操作
  • 2025年北京优质deepseek优化服务商全景指南:助力企业抢占AI流量新赛道 - 品牌2025
  • C#+VisionMaster联合开发控件篇(五)_全局相机控件
  • ROS2核心概念之参数