Kotlin入门1. 语法基础
liuian 2025-03-12 16:41 8 浏览
一、简介
Kotlin是一种静态编程语言,由JetBrains开发。它被设计为与Java兼容,并且可以在Java平台上运行。Kotlin支持现代编程语言的许多特性,如函数式编程、对象导向编程和元编程。这使得Kotlin能够方便地与Java代码混编,并且可以在没有JVM(Java虚拟机)的设备上运行。
Kotlin可以编译成Java字节码,因此可以在Java虚拟机上运行。此外,Kotlin也可以编译成JavaScript,使得它可以在浏览器中运行。这使得Kotlin成为一个适用于各种平台的多平台语言。
Kotlin的主要特点包括:
- 兼容Java:Kotlin可以与Java代码和库无缝交互,这使得它易于在现有Java项目中使用。
- 空值安全:Kotlin对空值进行了严格的检查,这减少了NullPointerException等常见错误。
- 函数式编程:Kotlin支持函数式编程,这使得它可以轻松地处理集合和数组。
- 简洁的语法:Kotlin的语法比Java更简洁,这使得编写和理解代码变得更加容易。
- 与Java虚拟机(JVM)的兼容性:Kotlin编写的代码可以在Java虚拟机(JVM)上运行,这使得Kotlin成为一个适用于构建跨平台应用程序的强大工具。
Kotlin已正式成为Android官方支持开发语言,这使得它成为开发Android应用的一个越来越受欢迎的选择。
本学习系列使用开发工具为: - windows 11 - Idea
二、在Idea创建一个示例项目
在这里插入图片描述
创建好的项目带一个示例程序:
在这里插入图片描述
三、基本语法
1. 第一个程序
- Kotlin文件扩展名为.kt;
- Kotlin 程序运行的起点为 main 函数;
写一个简单的.kt程序:
fun main(args: Array) {
println("Hello World!")
}
点击运行按钮运行程序。
在这里插入图片描述
要点: - kotlin 语句不需要用;结束 -
2. 基本数据类型
(1) 数字
定义数据类型的语法:
val i: Int = 100
Kotlin内置的数字类型: - Double 64位 - Float 32位 - Long 64位 - Int 32位 - Short 16位 - Byte 8位 Kotlin默认的小数类型为Double类型。 Kotlin支持 _ 分割数字,如 1_0000。
(2) 类型转换
- 转换为字节型 : 10.toByte()
- 转换为短整型: (12.34).toShort()
- 转换为整型: (12.34).toInt()
- 转换为长整型:(1234.56).toLong()
- 转换为单精度小数:123.toFloat()
- 转换为双精小数: 123.toDouble()
- 转换为字符:123.toChar()
(3) 数学运算
- 常见运算: + - * /
位运算
- shl 带符号左移;shr()
- shr 带符号右移
- ushr:无符号右移
- and(bits): 与 &
- or(bits) : 或 ||
- xor(bits): 异或
- inv() : 取反
(4)可空类型
如String? , Int、
3. 函数
函数是可重用的代码块,可以执行一个特定的任务,并且可以带有参数和返回值。在Kotlin中,函数的基本结构如下:
fun functionName(parameters): returnType {
// function body
// perform some action
return someValue
}
其中:
- fun 是关键字,用于声明这是一个函数。
- functionName 是你给函数起的名字。
- parameters 是传递给函数的参数,可以有零个或多个。参数之间用逗号分隔。
- returnType 是函数返回的数据类型。如果函数不返回任何值,则使用 Unit。
- function body 是函数的具体实现,这里可以执行需要的任务。
- return someValue 是函数执行完毕后返回的值。如果函数没有返回值,则不需要这个语句。
下面是一个具体的盒子:
fun add(a: Int, b: Int): Int {
return a + b
}
这个函数名为 add,它接受两个整数参数 a 和 b,并返回它们的和。调用的方法如下:
val result = add(3, 4)
println(result) // Prints: 7
这个函数通过加法运算实现了它的任务,并返回结果。
4. 字符串
Kotlin字符串是一个字符序列,可以使用双引号(" ")括起来的字符序列来表示。例如:
val str = "Hello, World!"
在Kotlin中,字符串还支持许多操作,如拼接、查找、替换、分割等。下面是一些常用的字符串操作示例:
(1) 字符串拼接
在Kotlin中,可以使用加号(+)操作符来拼接字符串。例如:
val str1 = "Hello"
val str2 = "World"
val result = str1 + str2 // 拼接字符串
println(result) // 输出:HelloWorld
(2) 字符串查找
在Kotlin中,可以使用contains()方法来检查一个字符串是否包含另一个字符串。例如:
val str = "Hello, World!"
val searchStr = "World"
if (str.contains(searchStr)) {
println("The string contains \"$searchStr\"")
} else {
println("The string does not contain \"$searchStr\"")
}
输出:
The string contains "World"
(3) 字符串替换
在Kotlin中,可以使用replace()方法来替换字符串中的某个或某些字符。例如:
val str = "Hello, World!"
val newStr = str.replace("World", "Kotlin")
println(newStr) // 输出:Hello, Kotlin!
(4) 字符串分割
在Kotlin中,可以使用split()方法将字符串按照指定的分隔符分割成字符串数组。例如:
val str = "apple,banana,orange"
val arr = str.split(",") // 以逗号为分隔符,将字符串分割成字符串数组
for (item in arr) {
println(item) // 输出:apple、banana、orange
}
5. null 安全的变量
null是一个特殊的关键字,表示空值。在某些情况下,如果一个变量的值为null,可能会导致程序出现异常或错误。因此,确保变量的值不为null是非常重要的。在Kotlin中,null安全是一种保障,用于确保程序中不会出现null值。
Kotlin是一种静态类型语言,编译器在编译时会检查代码中可能存在的类型错误同,其中之一就是null安全。Kotlin通过类型推断和注解来确保变量的值不为null。
在Kotlin中,可以使用null关键字来表示空值。 为了避免出现空指针异常,Kotlin提供了一些机制来确保null安全。
- 首先,Kotlin具有空值安全类型。例如:
var str: String? = null
在这个例子中,String?表示该变量可能为null。如果尝试在代码中调用str.length(),编译器会发出警告,因为这可能会导致空指针异常。
为了解决这个问题,可以使用非空判断(non-null assertion)。例如:
if (str != null) {
println(str.length())
} else {
println("String is null")
}
在这个例子中,如果str不为null,则可以调用str.length()。否则,将输出"String is null"。
另外,Kotlin还提供了一些其他机制来确保null安全。例如:
- Elvis运算符(?:):如果左边的表达式为null,则返回右边的表达式。例如:str?.length() ?: 0表示如果str不为null,则返回str的长度,否则返回0。
- Optional类型:在Java中,可以使用Optional类型来避免返回null值。在Kotlin中也可以使用类似的类型来确保null安全。例如:fun findName(): Optional? { ... }表示该函数返回一个可能为null的Optional类型的变量。
- 使用Java的注解:在Java中,可以使用@NonNull和@Nullable注解来标记方法的参数或返回值是否可以为null。在Kotlin中也可以使用这些注解来确保null安全。
相关推荐
- 如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
在数字化时代,图像作为信息传递的重要载体,在个人生活记录、新闻传播及商业营销中发挥着不可替代的作用。然而,当面对特定需求时,如隐私保护、编辑优化或时间戳校正等场景,调整图片拍摄时间的需求时常出现。通过...
- python教程从基础到精通,第9课—日期与时间
-
Hello,小伙伴们,祝大家五.一玩得快乐!刚学习完了七大数据类型,今天咱们来学习日期与时间的表示方法。Python标准库中提供了时间和日期的支持:calendar:日历相关;time、datetim...
- Python中datetime模块和date类的主要区别是什么?
-
Python中datetime模块和date类的主要区别如下:一、功能范围差异datetime模块核心功能:提供完整的日期和时间处理能力,包含日期、时间、时间间隔、时区等操作。关键类:datetime...
- 解密Python时间测量迷雾:高精度计时器time.perf_counter的妙用
-
当我们在Python中使用time模块进行时间测量时,可能会遇到一些精度不够的问题。具体而言,time.time()返回的是自纪元以来的秒数,但在一些情况下,其精度可能受到系统硬件时钟的限制,无法捕捉...
- Python技能:时间管理哪家强?time、datetime、calendar来相会!
-
大家好,我是钢铁老豆!快到五一了,每年到了这个时间点,就又该吐槽放假调休啦!真心不如不调,心累啊!言归正传,今天我们要聊聊Python是如何操作日期和时间的。0.模块简介在Python中,处理日期和...
- python之时间处理
-
datetime包导入包与模块fromdatetimeimportdatetimeimportdatetime常用函数函数名功能说明now获取当前时间戳用法:now=datetime.n...
- 软件测试|教你轻松玩转Python日期时间
-
Python基础之日期时间处理前言:软件测试工作中,有时会需要我们在代码中处理日期以及时间,python内置的datetime模块就可以很好地帮我们处理这个问题。该模块常用的类有:类名功能说明date...
- 「耗时测试」python time包中的time()和process_time()如何选择?
-
在统计python代码执行速度时要使用到time包,可以使用time.time()和time.process_time()(注:Python3.8已移除clock()方法,可以使用perf_...
- python进阶突破内置模块——日期与时间详解
-
Python提供了多个内置模块用于处理日期和时间,涵盖了从基础时间操作到时区管理的各种需求。以下是核心模块及其关键功能的详细说明:1.datetime模块datetime是处理日期和时间的核心模块...
- python就该这么学:python快速获取系统时间
-
在python语言中,为了得到一定目的,多数通过调用第三方的库来完成。要获取系统时间需要调用时间相关的库time。通过importtime来引入库。为了方便编码或者防止歧义,也可以通过import...
- Python日期和时间
-
说明Python提供了一个time和calendar模块可以用于格式化日期和时间。时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。pyt...
- python内置时间函数time详解
-
内置函数时间time()1、年:tm_year,月:tm_mon,日:tm_mday,时:tm_hour,分:tm_min,秒:tm_sec,星期:tm_wday(从0开始)2、Time.t...
- 【Python数据分析系列】将一个时间戳转换为可读的日期和时间格式
-
这是我的第396篇原创文章。一、引言在Python中可以通过datetime模块来实现。一般来说,时间戳通常是自1970年1月1日(称为“Unix时间”)以来的秒数。以下是一个示例,演示如何将这...
- 程序员的日常:时间戳和时区的故事
-
什么是时间戳(timestamp)?它和时区(timezone)又有什么关系?初学者可能一开始很难搞懂时间戳这个概念,就像这期《程序员的日常》漫画中的主人公一样。漫画注释从漫画中举的例子来看,这里的时...
- 快速掌握Python时间函数的常用知识
-
我们经常要用到时间,像日志log就要记录时间,什么时候做了什么事情;什么时候调用了哪些过程;什么时候返回了错误等等。时间模块里面的一些方法也是经常会用到的,比如游戏要控制时间,如贪吃蛇的移动时间控制,...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
-
- 如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
- python教程从基础到精通,第9课—日期与时间
- Python中datetime模块和date类的主要区别是什么?
- 解密Python时间测量迷雾:高精度计时器time.perf_counter的妙用
- Python技能:时间管理哪家强?time、datetime、calendar来相会!
- python之时间处理
- 软件测试|教你轻松玩转Python日期时间
- 「耗时测试」python time包中的time()和process_time()如何选择?
- python进阶突破内置模块——日期与时间详解
- python就该这么学:python快速获取系统时间
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- react-admin (33)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)