【Kotlin】Kotlin 基础语法指南

news2024/11/17 23:52:59

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

变量与常量

数据类型

条件表达式

If 表达式

When 表达式

循环语句

For 循环

While 循环

函数

默认参数和命名参数

类和对象

类的定义

方法和属性

空安全

可空类型

安全调用操作符

Elvis 操作符

集合与操作

扩展函数

结论

作者其他作品:


 

Kotlin 是一种现代、简洁且强大的编程语言,它在 Android 开发中得到了广泛应用,同时也在服务器端开发和多平台开发中展现了强大的能力。本文将带您快速了解 Kotlin 的一些基础语法,以便您能够更快地上手这门语言。

目录

  1. 变量与常量
  2. 数据类型
  3. 条件表达式
  4. 循环语句
  5. 函数
  6. 类和对象
  7. 空安全
  8. 集合与操作
  9. 扩展函数

变量与常量

在 Kotlin 中,变量使用 var 声明,而常量则使用 val 声明。val 表示的变量在初始化后不能再修改,而 var 则可以在之后重新赋值。

 

kotlin

复制代码

val immutableVariable: String = "Hello, World!" // 只读变量 var mutableVariable: Int = 10 // 可变变量

Kotlin 具有类型推断能力,你可以省略显式的类型声明:

 

kotlin

复制代码

val greeting = "Hello, World!" // Kotlin 会推断类型为 String var number = 10 // Kotlin 会推断类型为 Int

数据类型

Kotlin 提供了丰富的基本数据类型,包括数字、字符、布尔值和字符串。

 

kotlin

复制代码

val intNum: Int = 42 val doubleNum: Double = 3.14 val charVal: Char = 'A' val boolVal: Boolean = true val strVal: String = "Kotlin"

条件表达式

Kotlin 中的条件表达式非常类似于其他编程语言,但具有更简洁的语法。

If 表达式

if 在 Kotlin 中是一个表达式,可以直接用于赋值操作:

 

kotlin

复制代码

val max = if (a > b) a else b

When 表达式

when 表达式是 Kotlin 中的一个强大工具,类似于其他语言中的 switch 语句,但功能更强大:

 

kotlin

复制代码

val result = when (value) { 1 -> "One" 2 -> "Two" else -> "Unknown" }

循环语句

Kotlin 提供了多种循环方式来处理迭代任务。

For 循环

for 循环用于遍历集合或数组:

 

kotlin

复制代码

for (i in 1..5) { println(i) } for (item in listOf("A", "B", "C")) { println(item) }

While 循环

whiledo-while 循环在 Kotlin 中的使用方式与其他语言类似:

 

kotlin

复制代码

var x = 5 while (x > 0) { println(x) x-- } do { println("This will be printed at least once") } while (false)

函数

Kotlin 中的函数定义非常简洁,可以在单行中完成:

 

kotlin

复制代码

fun add(a: Int, b: Int): Int { return a + b } // 单表达式函数 fun subtract(a: Int, b: Int) = a - b

默认参数和命名参数

函数可以有默认参数,并且可以通过命名参数来调用:

 

kotlin

复制代码

fun greet(name: String = "World") { println("Hello, $name!") } greet() // 输出: Hello, World! greet("Kotlin") // 输出: Hello, Kotlin!

类和对象

Kotlin 提供了简洁的类定义方式,并支持主构造函数和次构造函数。

类的定义

 

kotlin

复制代码

class Person(val name: String, var age: Int) val person = Person("Alice", 30) println("${person.name} is ${person.age} years old")

方法和属性

你可以在类中定义方法和属性:

 

kotlin

复制代码

class Rectangle(val width: Int, val height: Int) { val area: Int get() = width * height fun printArea() { println("The area is $area") } } val rectangle = Rectangle(5, 7) rectangle.printArea() // 输出: The area is 35

空安全

Kotlin 的空安全功能可以帮助你避免许多常见的空指针异常(NullPointerException)。

可空类型

在 Kotlin 中,默认情况下变量是不可为空的。如果需要表示一个可能为空的值,可以使用 ? 来标注:

 

kotlin

复制代码

val nullableString: String? = null

安全调用操作符

使用 ?. 操作符可以安全地调用可能为空的变量的方法:

 

kotlin

复制代码

val length = nullableString?.length // 如果 nullableString 为 null,则 length 也为 null

Elvis 操作符

使用 ?: 操作符可以提供一个默认值,当左侧的表达式为空时使用该值:

 

kotlin

复制代码

val length = nullableString?.length ?: 0 // 如果 nullableString 为空,则 length 为 0

集合与操作

Kotlin 提供了强大的集合类库和函数操作,使得数据处理更为简便。

 

kotlin

复制代码

val numbers = listOf(1, 2, 3, 4, 5) val doubled = numbers.map { it * 2 } val filtered = numbers.filter { it % 2 == 0 } println(doubled) // 输出: [2, 4, 6, 8, 10] println(filtered) // 输出: [2, 4]

扩展函数

Kotlin 支持为现有的类添加新功能而无需继承或使用装饰器模式:

 

kotlin

复制代码

fun String.isPalindrome(): Boolean { return this == this.reversed() } println("racecar".isPalindrome()) // 输出: true

结论

Kotlin 以其简洁、安全和强大的功能迅速成为了开发者的宠儿。它不仅适用于 Android 开发,还可以用于服务器端、桌面应用程序以及多平台开发。通过掌握这些基础语法,您可以更好地利用 Kotlin 的优势,编写高效和可靠的代码。

希望这篇指南能帮助您快速上手 Kotlin,享受编程的乐趣!如果您有任何问题或想要了解更深入的 Kotlin 内容,请随时在评论区分享您的想法。

Happy coding with Kotlin!


如果你想了解更多关于 Kotlin 的信息,可以参考以下资源:

  • Kotlin 官方文档
  • Kotlin 教程和示例
  • Kotlin 编程指南


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史 

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

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

相关文章

vue项目手机录音

手机实现录音功能&#xff0c;安卓和苹果都可。功能&#xff0c;点击开始录制录音后&#xff0c;随时可以停止录音&#xff0c;如果不点击停止最多录制15秒。 页面结构 <!--音频--> <div class"audio-box"><audio id"audioPlayer"controlsc…

excel修改批量一列单价的金额并保留1位小数

1.打开表格&#xff0c;要把单价金额变成现在的两倍&#xff0c;数据如下&#xff1a; 2.把单价这一列粘贴到一个新的sheet页面&#xff0c;在B2单元格输入公式&#xff1a;A2*2 然后按enter回车键,这时候吧鼠标放到B2单元格右下角&#xff0c;会出现一个黑色的小加号&#xf…

泰国火出圈的slots游戏联动本土网盟广告推广优势

泰国火出圈的slots游戏联动本土网盟广告推广优势 在泰国&#xff0c;Slots游戏凭借其独特的魅力和吸引力&#xff0c;迅速成为玩家们的热门选择。然而&#xff0c;要在竞争激烈的市场中脱颖而出&#xff0c;推广策略显得尤为重要。本土网盟广告以其独特的优势&#xff0c;为Sl…

制氢厂氢气泄漏安全监测:氢气传感器守护“氢”安全

随着全球能源结构的转型和清洁能源的需求日益增长&#xff0c;氢能作为一种高效、清洁的能源载体&#xff0c;受到了广泛关注。制氢厂作为氢能产业的重要组成部分&#xff0c;其安全问题也日益凸显。在制氢过程中&#xff0c;氢气泄漏是潜在的安全隐患之一&#xff0c;因此&…

数据结构/作业/2024/7/11

1.在堆区申请两个长度为32的空间&#xff0c;实现两个字符串的比较【非库函数实现】 #include <stdio.h> #include <stdlib.h> void input(char*p); void my_strcmp(char *p1,char *p2); int main(int argc, const char *argv[]) {//申请内存空间32个字节 char *p…

vue3 elementplus Springboot 课程购买系统案例源码

系统演示 项目获取地址 Springboot vue3 elementplus 课程购买系统案例源码 附带系统演示&#xff0c;环境搭建教程,开发工具 技术栈:SpringBoot Vue3 ElementPlus MybatisPlus 开发工具:idea 后端构建工具:Maven 前端构建工具:vite 运行环境:Windows Jdk版本:1.8 Nod…

javaweb(四)——过滤器与监听器

文章目录 过滤器Filter基本概念滤波器的分类: 时域和频域表示滤波器类型1. 低通滤波器(Low-Pass Filter)2. 高通滤波器(High-Pass Filter)3. 带通滤波器(Band-Pass Filter)4. 带阻滤波器(Band-Stop Filter) 滤波器参数1. 通带频率(Passband Frequency)2. 截止频率(Cutoff Frequ…

Cesium与Three相机同步(3)

Cesium与Three融合的案例demo <!DOCTYPE html> <html lang"en" class"dark"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content&q…

【论文阅读】-- M4:面向可视化的时间序列数据聚合

M4: A Visualization-Oriented Time Series Data Aggregation 摘要1 引言2. 查询重写3.时间序列可视化4. 数据缩减运算符4.1 面向可视化的数据聚合4.2 M4聚合4.3 聚合相关的像素错误4.4 M4 上限 5. 时间序列数据缩减6. 评估6.1 真实世界时间序列数据6.2 查询执行性能6.3 可视化…

ByLabel标签打印系统有人用过吗,哪些打小票的软件比较方便?热敏打印机

刚接触小票机热敏打印机ZDesigner ZD888-203dpi ZPL&#xff0c;看网上的说明是要用ZPL打印机协议&#xff0c;一时学不会。 看一个小票机个子小小的&#xff0c;费用要一二千元&#xff0c;外国人真会赚钱。 斑马打印机&#xff0c;网上说的是中文要转换成图片&#xff0c;或者…

ChatGPT 官方发布桌面端,向所有用户免费开放

Open AI 官方已经发布了适用于 macOS 的 ChatGPT 桌面端应用。 此前&#xff0c;该应用一直处于测试阶段&#xff0c;仅 Plus 付费订阅用户可以使用。 目前已面向所有用户开放&#xff0c;所有 Mac 用户均可免费下载使用。 我们可以访问官网下载安装包&#xff1a;https://op…

【netty系列-04】反应堆模式的种类和具体实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

Node端使用工作线程来解决日志开销-处理IO密集型任务

我们的BBF层很多时候会作为中间层处理后端到前端的数据&#xff0c;当然大部分时候都只是作为请求 / 响应的数据组装中心&#xff0c;但是有一个插件是怎么都绕不过去的&#xff1a;Log4js。 内部我们在Node层打印了很多日志。结果这周仔细分析了一下服务器处理请求到响应的中间…

MacOS BurpSuite安装指南

burpsuite破解 用户家目录中创建文件夹burp 两个文件&#xff1a; burp最新版jar包 burpsuite_pro_v2024.3.1.4.jar 在哪下载&#xff1f; 官网&#xff1a;Professional / Community 2024.3.1.4 | Releases 百度云盘&#xff1a;链接: 百度网盘 请输入提取码 提取码: sgsk …

线性代数|机器学习-P21概率定义和Markov不等式

文章目录 1. 样本期望和方差1.1 样本期望 E ( X ) \mathrm{E}(X) E(X)1.2 样本期望 D ( X ) \mathrm{D}(X) D(X) 2. Markov 不等式&Chebyshev不等式2.1 Markov不等式公式 概述2.2 Markov不等式公式 证明&#xff1a;2.3 Markov不等式公式 举例&#xff1a;2.4 Chebyshev不…

从架构设计的角度分析ios自带网络库和AFNetworking

总结&#xff08;先说明文章分析出的一些‘认知’&#xff09; 从本文中&#xff0c;我们可以总结出一些框架设计上的“认知”&#xff1a; 对于通用的常规配置信息方面的设计&#xff0c;我们可以通过定义一个“类似于NSURLSessionConfiguration、NSURLRequest”的类来完成设…

41、web基础和http协议

web基础与http协议 一、web web&#xff1a;就是我们所说得页面&#xff0c;打开网页展示得页面。&#xff08;全球广域网&#xff0c;万维网&#xff09; world wide webwww 分布式图形信息系统 http&#xff1a;超文本传输协议 https&#xff1a;加密的超文本传输协议…

上位机图像处理和嵌入式模块部署(mcu 项目1:固件编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 说完了上位机的开发&#xff0c;接下来就是固件的开发。前面我们说过&#xff0c;目前使用的开发板是极海apm32f103的开发板。它自身包含了iap示例…

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;概述 &#x1f348;目标检测的主要流程通常包括以下几个步骤 &#x1f34d;数据采集 &#x1f34d;数据预处理 &#x1f34d;特征提取 &#x1f34d;目标定位 &#x1f34d;目标分类 &#x1f348;…

千益畅行,旅游卡,如何赚钱?

​ 赚钱这件事情&#xff0c;只有自己努力执行才会有结果。生活中没有幸运二字&#xff0c;每个光鲜亮丽的背后&#xff0c;都是不为人知的付出&#xff01; #旅游卡服务#