1 简单的Kotlin程序
fun main() {
println("HelloWorld!")
// System:HelloWorld!
}
这个简单程序刻画了Kotlin程序的基本结构:
fun关键字用于定义一个函数- 名为
main的函数是整个程序的入口 println语句的作用是把字符串打印到控制台- 语句后不需要加
;
2 变量
2.1 val 关键字和 var 关键字
val关键字定义一个只读变量,即变量指向的位置不可改变var关键字定义一个可变变量,变量指向的位置是可变的
在后续不需要更改变量时,优先使用 val 关键字定义的只读变量
2.2 变量的基本类型
在Kotlin中,变量有如下的基本类型:
- 整型:
ByteShortIntLong - 无符号整形:
UByteUShortUIntULong - 浮点型:
FloatDouble - 布尔型:
Boolean - 字符型:
Char - 字符串型:
String
注意:这些类型的名称都是以大写开头的
2.3 声明变量
在Kotlin中:
- 变量若是在声明的时候就已经被赋上初值,则不需要声明变量的类型,编译器会自动分配变量的类型
- 若仅声明而不赋值,那么必须显式声明变量的类型
var name = "Tangent0712"
val language:String
language = "Kotlin"
2.4 变量的格式化输出
println() 函数接收的是字符串,如果有变量参与打印输出,则必须把变量格式化为字符串
println("Hello!My name is ${name} !")
3 容器
3.1 列表(List)
在Kotlin中:
- 列表中的数据是有序的
- 列表的数据类型为`List `或`MutableList`
listOf()函数可以创建一个只读列表mutableListOf()函数可以创建一个可变列表- 列表名后面使用方括号可以获取指定索引的元素
.first()和.last()后缀函数返回列表中首个或末个元素.count()后缀函数以整型返回列表元素的个数in关键字检查元素是否在列表中,并返回一个布尔值.add(newItem)和.remove(existingItem)后缀函数可以向列表的末尾新增元素或从列表中删除已有元素
注意:
- 变量类型中的
val和var指的是引用的可变性,而不是指引用内容的可变性 - 也就是说,
val类型的mutableList仍然可以编辑,但是整个变量不可以指向一个新的列表
val myOC = mutableListOf("XiaoTing","LinLing")
//val means immutable reference,but the list content can be modified because we have used mutableListOf()
myOC.remove("XiaoTing")
myOC.add("XiaoTing")
println(myOC)
//System:[LinLing, XiaoTing]
3.2 集合(Set)
在Kotlin中:
- 集合中的元素是无序的,唯一的,无法按照索引获得元素
- 集合的数据类型为`Set `或`MutableSet`
- 和列表类似,集合提供
setOf()和mutableSetOf()函数来新建集合 - 和列表类似,集合提供
in关键字 - 和列表类似,集合提供
.add(newItem)和.remove(existingItem)后缀函数,以及用来计数的.count()后缀函数
val myOC = muableSetOf("XiaoTing","LinLing")
myOC.remove("XiaoTing")
myOC.add("XiaoTing")
println("XiaoTing" in myOC)
//System:true
3.3 字典(Map)
在Kotlin中:
- 字典存储键值对,键必须是唯一的,键值对是无序的
- 字典的数据类型为
Map<Key,Value>或MutableMap<Key,Value> - 在字典名后面使用方括号输入键可以获取对应的值,如果键不存在,则返回
null - 和列表类似,字典提供
mapOf()和mutableMapOf()函数来新建字典 - 想要向字典中新增键值对,直接将值赋给字典所读取的相应的键即可
.containsKey(key)函数返回一个布尔值,判断字典中是否存在相应的键- 使用
.keys和.values方法可以返回一个包含所有键或值的List
val myOC = mutableMapOf("young" to "XiaoTing")
myOC["adult"] = "LinLing"
myOC.remove("young") 