news 2026/5/1 17:18:47

kotin基础语法汇总

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 0:19:44

Windows剪贴板的超级增强器,提升你的工作效率

Windows剪贴板的超级增强器,提升你的工作效率 在日常的电脑操作中,复制粘贴无疑是使用频率极高的功能。然而,Windows自带的剪贴板功能却显得捉襟见肘,每次复制新内容时,旧的内容就会被无情地覆盖。这对于需要频繁切换或重复使用之前复制内容的用户来说,无疑是一个巨大的痛…

作者头像 李华
网站建设 2026/4/22 14:33:57

@AutoConfigureBefore 与 @AutoConfigureAfter

目录 1、介绍 1.1、设计目的 1.2、定义 1.3、作用域 1.4、设计限制 2、应用 2.1、使用场景 2.2、工作原理 2.3、实战示例 3、常见误区与最佳实践 3.1、最佳实践 3.2、常见误区 3.3、与其他顺序控制注解对比 前沿 控制 Spring Boot 自动配置顺序: “我…

作者头像 李华
网站建设 2026/4/30 22:47:35

Qt----事件简述

目录1,事件的概念2,事件循环3,父子控件之间事件的传递处理4,事件过滤器1,事件的概念 定义: 事件是应用程序内部发生的事情或应用程序需要知道的外部事件的结果。 事件和信号的区别: 事件是由外…

作者头像 李华
网站建设 2026/4/30 22:50:14

AXI-A7.4.3 Atomic transactions attributes

一、atomic transactions are as follows: 1. AWLEN和AWSIZE指定写数据的字节数(对于AtomicCompare需包含比较值和交换值) AWLEN(突发长度)和AWSIZE(每次传输的字节数)共同决定了原子事务中写数据的总字节数。对于大多数原子事务,这指的是操作数的大小;但对于AtomicCom…

作者头像 李华
网站建设 2026/4/30 23:58:49

内存泄漏怎么定位和解决?core dump有哪些信息?

一、为什么会内存泄漏?常见场景:音频播放反复malloc缓冲区未freeMQTT断线重连时不断分配内存呢解析JSON字符串频繁申请堆空间回调注册后未注销导致上下文无法释放使用全局链表或队列但不清除节点二、如何定位内存泄漏?1、添加内存监控接口在T…

作者头像 李华
网站建设 2026/5/1 0:05:09

STL deque 的详细特征

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

作者头像 李华