在 Kotlin 中:

  • fun用于声明函数

  • 该函数是程序的起点main()

  • 函数的主体写在大括号内{}

  • println()print() 函数将其参数打印到标准输出

函数是执行特定任务的一组指令。创建函数后,您可以在需要执行该任务时随时使用它,而无需重新编写说明。函数将在几章中更详细地讨论。在此之前,所有示例都使用该函数。main()

一、变量

所有程序都需要能够存储数据,而变量可以帮助您做到这一点。在 Kotlin 中,您可以声明:

  • 只读变量val

  • 可变变量var

    val a = 100
    var b = 100

二、字符串模板

使用$和{}配合使用,如:

var name = "liuhang"
var age = 21
println("$name is $age years old");//liuhang is 21 years old

或者用于list等等,如:

var app: MutableList<String> = mutableListOf("nihao","liuhang")
println("${app[0]}")//nihao

三、基本类型

类别 基本类型 示例代码
整数 Byte, , ,Short``Int``Long val year: Int = 2020
无符号整数 UByte, , ,UShort``UInt``ULong val score: UInt = 100u
浮点数 Float,Double val currentTemp: Float = 24.5f,val price: Double = 19.99
布尔 值 Boolean val isEnabled: Boolean = true
字符 Char val separator: Char = ','
字符串 String val message: String = "Hello, world!"

例如:

val a : Int
a = 3
val b :Boolean
b = true

四、集合

1.List

要创建只读列表 (List),请使用 listOf() 函数。

要创建可变列表 (MutableList),请使用 mutableListOf() 函数。

val list : List<String> = ListOf("1","2")
val mutableList : MutableList<String> = mutableListOf("LIST","SET")

要获取列表中的第一项或最后一项,请分别使用 .first().last() 函数

val mutableList : MutableList<String> = mutableListOf("LIST","SET")
println("${mutableList.first()}")//LIST

要获取列表中的项数,请使用 .count() 函数:

val mutableList : MutableList<String> = mutableListOf("LIST","SET")
println("${mutableList.count()}")//2

要检查项目是否在列表中,请使用 in 运算符

val mutableList : MutableList<String> = mutableListOf("LIST","SET")
println("LIST" in mutableList)//true

要在可变列表中添加或删除项目,请分别使用 .add().remove() 函数:

val mutableList : MutableList<String> = mutableListOf("LIST","SET")
mutableList.add("ADD")
println("ADD" in mutableList)//true
mutableList.remove("ADD")
println("ADD" in mutableList)//false

2.Set

列表是有序的,允许重复的项目,而 set 是无序的,只存储唯一的项目。

要创建只读集 (Set),请使用 setOf() 函数。

要创建可变集 (MutableSet),请使用 mutableSetOf() 函数。

val set : Set<String> = SetOf("nihao","nihao","set")//[nihao,set]

Set和List有同样的操作,如.count() 函数、in 运算符.add().remove() 函数,但是由于Set无序,自然就没有 .first().last() 函数。

3.Map

Map将项目存储为键值对。您可以通过引用 key 来访问该值。你可以把Map想象成一个食物菜单。您可以通过找到您想吃的食物 (key) 来找到价格 (价值)。如果您想在不使用编号索引的情况下查找值,例如在列表中,映射非常有用。

要创建只读地图 (Map),请使用 mapOf() 函数。

要创建可变映射 (MutableMap),请使用 mutableMapOf() 函数。

val Map : Map<String,Int> = MapOf("a" to 1,"b" to 2)//{a=1,b=2}

要访问 map 中的值,请使用 indexed access 运算符及其键:[]

println("${Map["a"]}")//1

您还可以使用 indexed access 运算符将项目添加到可变映射中:[]

Map["c"]=3//{a=1,b=2,c=3}

要从可变映射中删除项目,请使用 .remove() 函数

Map.remove["c"]

要获取映射中的项目数,请使用 .count() 函数

val Map : Map<String,Int> = MapOf("a" to 1,"b" to 2)//{a=1,b=2}
println("${Map.count()}")//2

要检查特定键是否已包含在映射中,请使用 .containsKey() 函数:

val Map : Map<String,Int> = MapOf("a" to 1,"b" to 2)//{a=1,b=2}
println(Map.containsKey("a")//true

要获取 map 的 keys 或 values 的集合,请分别使用 keysvalues 属性

val Map : Map<String,Int> = MapOf("a" to 1,"b" to 2)//{a=1,b=2}
println(Map.keys)//[a,b]
println(Map.values)//[1,2]

五、控制流

1.条件表达式(if,when)

(1)if

要使用 ,请在括号内添加条件表达式,并在大括号内添加结果为 true 时要执行的作 :if``()``{}

val a : Int
if(true){
a = 1
}else{
a = 0
}

Kotlin 中没有三元运算符。相反,可以用作表达式。如果每个作只有一行代码,则大括号是可选的:condition ? then : else``if``{}

val a : Int = 1
val b : Int = 2
println(if(a > b)a else b)//2

(2)when

要使用 :when

  • 将要评估的值放在括号内。()

  • 将分支放在大括号内。{}

  • 在每个分支中使用 将每项检查与检查成功时要执行的作分开。->

when可以用作语句或表达式。语句不返回任何内容,而是执行作。

val a = "nihao"
when(a){
"nihao" -> println("nihao")
"buhao" -> println("buhao")
else -> println("unkown")
}
//nihao
val a = "nihao"
val b = when{
a == "nihao" -> "Good"
a == "buhao" -> "Bad"
else -> "unkown"
}
//Good
val a = "nihao"
val b = when(a){
"nihao" -> "Good"
"buhao" -> "Bad"
else -> "unkown"
}

2.循环

编程中最常见的两种循环结构是 和 。用于迭代一系列值并执行作。用于继续作,直到满足特定条件。for``while``for``while

利用您对范围的新知识,您可以创建一个循环,该循环遍历数字 1 到 5 并每次打印数字。

(1)for

将迭代器和范围放在带有关键字 的括号内。在大括号中添加要完成的作 :()``in``{}

for (number in 1..5){
println(number)
}
//12345
val number = ListOf("1","2","3")
for (numbers in number ){
println("liuhang is $numbers years old")
}
//liuhang is 1 years old
//liuhang is 2 years old
//liuhang is 3 years old

(2)while

while可以通过两种方式使用:

  • 在条件表达式为 true 时执行代码块。(while)

  • 首先执行代码块,然后检查条件表达式。(do-while)

在第一个用例 () 中:while

  • 声明 while 循环的条件表达式以在 括号内继续 。()

  • 在大括号中添加要完成的作 。{}

val a =0
while (a<3){
println("work")
a++
}
//work
//work
//work

在第二个用例 () 中:do-while

  • 声明 while 循环的条件表达式以在 括号内继续 。()

  • 使用关键字 定义要在大括号内完成的作。{}``do

六、功能

1.一般函数

在 Kotlin 中:

  • 函数参数写在 括号 内。()

  • 每个参数都必须具有一个类型,并且多个参数必须用逗号分隔。,

  • 返回类型写在函数的括号 之后,用冒号分隔。()``:

  • 函数的主体写在 curly braces 中。{}

  • 关键字用于退出函数或从函数返回某些内容。return

    fun sum(x: Int, y: Int): Int{
    return x+y
    }

2.命名函数

fun printMessageWithPrefix(message: String, prefix: String) {
    println("[$prefix] $message")
}
​
fun main() {
    // Uses named arguments with swapped parameter order
    printMessageWithPrefix(prefix = "Log", message = "Hello")
    // [Log] Hello
}

3.单表达式函数

fun sum(x: Int, y: Int): Int {
    return x + y
}
​
fun main() {
    println(sum(1, 2))
    // 3
}

4.Lambada表达式

Kotlin 允许您使用 lambda 表达式为函数编写更简洁的代码。

fun main() {
    val upperCaseString = { text: String -> text.uppercase() }
    println(upperCaseString("hello"))
    // HELLO
}

将 lambda 表达式传递给函数的一个很好的示例是在集合上使用 .filter() 函数:

val numbers = listOf(1, -2, 3, -4, 5, -6)
val positives = numbers.filter ({ x -> x > 0 })
println(positives)
// [1, 3, 5]

使用 .map() 函数来转换集合中的项目:

val numbers = listOf(1, -2, 3, -4, 5, -6)
val doubled = numbers.map { x -> x * 2 }
println(doubled)
// [2, -4, 6, -8, 10, -12]

七、类

Kotlin 支持使用类和对象进行面向对象的编程。对象对于在程序中存储数据非常有用。类允许您为对象声明一组特征。当您从类创建对象时,您可以节省时间和精力,因为您不必每次都声明这些特征。

要声明类,请使用关键字:class

class Customer

1.创建实例

class Contact(val id: Int, var email: String)
​
fun main() {
    val contact = Contact(1, "mary@gmail.com")
}

2.访问属性

class Contact(val id: Int, var email: String)
​
fun main() {
    val contact = Contact(1, "mary@gmail.com")
    
    // Prints the value of the property: email
    println(contact.email)           
    // mary@gmail.com
​
    // Updates the value of the property: email
    contact.email = "jane@gmail.com"
    
    // Prints the new value of the property: email
    println(contact.email)           
    // jane@gmail.com
}

3.成员函数

class Contact(val id: Int, var email: String) {
    fun printId() {
        println(id)
    }
}
​
fun main() {
    val contact = Contact(1, "mary@gmail.com")
    // Calls member function printId()
    contact.printId()           
    // 1
}

4.数据类

data class User(val name: String, val id: Int)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐