Kotlin编程知识总结
总结自《Android第一行代码》
变量
var
val
可变变量 不可变变量
自动类型推导:
val a = 10
显式声明类型:
val a: Int = 10
函数
关键词 fun
| fun methodName(param1: Int, param2: Int): Int { |
| return 0 |
| } |
语法糖
| fun methodName(param1: Int, param2: Int): Int = returnValue |
| fun methodName(param1: Int, param2: Int) = returnValue |
逻辑控制
if条件
| |
| fun largerNumber(num1: Int, num2: Int): Int { |
| var value = 0 |
| if (num1 > num2) { |
| value = num1 |
| } else { |
| value = num2 |
| } |
| return value |
| } |
| |
| fun largerNumber(num1: Int, num2: Int): Int { |
| val value = if (num1 > num2) { |
| num1 |
| } else { |
| num2 |
| } |
| return value |
| } |
| |
| fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) { |
| num1 |
| } else { |
| num2 |
| } |
when条件
| |
| when(任意类型的参数) { |
| 匹配值 -> { 执行逻辑 } |
| 匹配值 -> { 执行逻辑 } |
| ... |
| } |
| |
| fun getScore(name: String) = when (name) { |
| "Tom" -> 86 |
| "Jim" -> 77 |
| "Jack" -> 95 |
| "Lily" -> 100 |
| else -> 0 |
| } |
| |
| fun checkNumber(num: Number) { |
| when (num) { |
| is Int -> println("number is Int") |
| is Double -> println("number is Double") |
| else -> println("number not support") |
| } |
| } |
循环语句
| |
| val range = 0..10 |
| |
| for (i in 0..10) { |
| println(i) |
| } |
| |
| val range = 0 until 10 |
| |
| for (i in 0 until 10 step 2) { |
| println(i) |
| } |
| |
| 10 downTo 1 |
OOP
OOP的基本
| |
| |
| val p = Person() |
| |
| open class Person { |
| ... |
| } |
| |
| class Student : Person() { |
| var sno = "" |
| var grade = 0 |
| } |
| |
| |
| class Student(val sno: String, val grade: Int, name: String, age: Int) : |
| Person(name, age) { |
| ... |
| } |
| |
| |
| |
| class Student(name: String, age: Int) : Person(name, age), Study { |
| override fun readBooks() { |
| println(name + " is reading.") |
| } |
| } |
| |
| interface Study { |
| fun readBooks() |
| fun doHomework() { |
| println("do homework default implementation.") |
| } |
| } |
| |
| |
| |
数据类的单例类
| |
| data class Cellphone(val brand: String, val price: Double) |
| |
| object Singleton { |
| fun singletonTest() { |
| println("singletonTest is called.") |
| } |
| } |
Lambda编程
集合
| |
| val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape") |
| |
| val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape") |
| for (fruit in list) { |
| printLn(fruit) |
| } |
| |
| val list = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape") |
| list.add("Watermelon") |
| |
| |
| val map = HashMap<String, Int>() |
| map.put("Apple", 1) |
| map["Apple"] = 1 |
| val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5) |
| |
| for ((fruit, number) in map) { |
| println("fruit is " + fruit + ", number is " + number) |
| } |
| |
函数式API
| |
| val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon") |
| val maxLengthFruit = list.maxBy { it.length } |
| println("max length fruit is " + maxLengthFruit) |
| |
| {参数名1: 参数类型, 参数名2: 参数类型 -> 函数体} |
| val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon") |
| val lambda = { fruit: String -> fruit.length } |
| val maxLengthFruit = list.maxBy(lambda) |
| |
| |
| val maxLengthFruit = list.maxBy({ fruit: String -> fruit.length }) |
| |
| val maxLengthFruit = list.maxBy() { fruit: String -> fruit.length } |
| |
| val maxLengthFruit = list.maxBy { fruit: String -> fruit.length } |
| |
| val maxLengthFruit = list.maxBy { fruit -> fruit.length } |
| |
| val maxLengthFruit = list.maxBy { it.length } |
| |
| |
| val newList = list.map { it.toUpperCase() } |
| |
| val newList = list.filter { it.length <= 5 } |
| |
| val anyResult = list.any { it.length <= 5 } |
| val allResult = list.all { it.length <= 5 } |
| |
| |
空指针检查
Kotlin中的空指针
kotlin中所有参数和变量都不可为空,类名后加“?”即表示可为空的类型,可能造成空指针异常的函数都不允许编译通过
判断空指针的辅助工具
| |
| a?.doSomething() |
| |
| if (a != null) { |
| a.doSomething() |
| } |
| |
| val c = a ?: b |
| |
| val c = if (a ! = null) { |
| a |
| } else { |
| b |
| } |
| |
| fun getTextLength(text: String?) = text?.length ?: 0 |
| |
| val upperCase = content!!.toUpperCase() |
| |
| obj.let { obj2 -> |
| |
| } |
| |
| fun doStudy(study: Study?) { |
| study?.let { |
| it.readBooks() |
| it.doHomework() |
| } |
| } |
小技巧
| |
| "hello, ${obj.name}. nice to meet you!" |
| |
| "hello, $name. nice to meet you!" |
| |
| fun printParams(num: Int, str: String = "hello") { |
| println("num is $num , str is $str") |
| } |
| |
| printParams(123) |
| |
| printParams(str = "world", num = 123) |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)