美文网首页Android开发
Kotlin 基础笔记

Kotlin 基础笔记

作者: 夜远曦白 | 来源:发表于2020-04-27 17:25 被阅读0次

Kotlin 变量和常量

  • var 声明变量
  • val 声明常量
  • 不同的数据类型用不同的容器保存
  • kotlin 会通过类型推断自动推断数据类型
  • 我们可以用 : (分号)来显示的指定数据类型

常见容器存储范围

  • Byte 整数 -128 ~ 127
  • Short 整数 -32768 ~ 32767
  • Int 整数 -2147483648 ~ 2147483647
  • Long 整数 -9223372036854775807 ~ 9223372036854775807
  • Float 小数,小数点可精确到6位
  • Double 小数,小数点可以精确到15 ~ 16位
  • String 字符串,用 “” 双引号引起来的字符串都可以存

命令行交互式编程

命令行工具下载地址:https://kotlinlang.org/docs/tutorials/command-line.html

函数编写规则

fun 函数名(参数名:参数类型):返回类型{ 
    函数体
}

作业

    1. 请编写函数,函数名为 sayHello,方法返回值是 String 类型,一个参数是 String 类型,名称为 name。
    fun sayHello(name: String): String {
        return "Hello, $name"
    }
    1. 请编写函数,函数名为 checkAge,方法的返回值是 Boolen 类型,一个参数是整数类型,名称为 age。
    fun checkAge(age: Int): Boolean {
        return age > 18
    }
    1. 请编写函数,函数名为 saveLog,方法没有返回值,一个参数是整数类型,名称为 logLever。
    fun saveLog(logLever: Int) {
        Log.d("TAG", "logLever = " + logLever)
    }

字符串模板

$
比如上述 sayHello 函数中返回,name 是变量

"Hello, $name"

条件控制 if else

if、else 如果只有一行,if (xx) xx else xx

字符串比较

= 一个等号是赋值

== 两个等号相当于 java 中 equal,用于比较两个变量的值

=== 三个等号相当于 java 中的 ==,用于比较两个变量的引用是否一致

equals 第二个参数表示是否忽略大小写,默认为 false

Kotlin 空值处理

给变量加上 ?号表示变量可为空

when 表达式

比 java 中 switch 好用,更强大方便

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 注意这个块
        print("x is neither 1 nor 2")
    }
}

https://www.kotlincn.net/docs/reference/control-flow.html

loop 和 Range

var num = 1 until 100 // [1,100)
var num = 1 .. 100 // [1,100]

step 跳序 a in num step 2
reversed(), 倒序
count(),总数

list 和 map 入门

        var lists = listOf("aa", "bb", "cc")
        for ((i, e) in lists.withIndex()) {
            Log.d("MainActivity", "$i  $e")
        }

mapOf():该函数返回不可变的Map集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。

mutableMapOf():该函数返回可变的MutableMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。

hashMapOf():该函数返回可变的HashMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。

linkedMapOf():该函数返回可变的LinkedHashMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。

sortedMapOf():该函数返回可变的TreeMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。

// 创建不可变集合,返回值是Map
var map = mapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)
...

函数和函数式表达式

 fun add(x: Int, y: Int): Int = x + y
 // 函数表达式写法
 var add = { x: Int, y: Int -> x + y }
 // 函数声明另外一种写法
 var add2: (Int, Int) -> Int = { x, y -> x + y }

默认参数和具名参数

  • fun add(x: Int = 1, y: Int): Int = x + y

  • var result = add(y = 2)

字符串转数字

        var c = "16"
        var d = 16
        
        c = d.toString()
        d = c.toInt()

人机交互

// readLine()返回值是 String?,键盘输入数据,而不用程序定死
var num = readLine()

异常处理

 try {
       xxx
    } catch (e: Exception) { 
       xxx
    } finally {
       xxx
    }

递归

    // 阶乘
    fun fact(num: Int): Int {
        if (num == 1) {
            return 1
        } else {
            return num * fact(num - 1)
        }
    }

尾递归优化

    // 累加
    tailrec fun ollAdd(num: Int, result: Int): Int {
        if (num == 0) {
            return 1
        } else {
            return ollAdd(num - 1, result + num)
        }
    }

继承

open 可被继承
override 重写

抽象

abstract

多态

同种功能,不同的表现形式,一个东西的多种状态。

接口和抽象类

接口是事物的能力
抽象类是事物的本质

interface

委托和代理

委托是把事情托付给别人或别的机构办理
代理是指以他人的名义,在授权范围内进行对被代理人直接发生法律效力的法律行为。代理的产生,可以是受他人委托。

by

单例模式

object

枚举

    enum class Week {
        Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
    }

调用:Week.Monday(Monday), Week.Monday.ordinal(0)

印章类

子类类型有限的 class
sealed

    sealed class Person {

        fun sayHello(){
            Log.d("TAG", "Hello")
        }

        class Man : Person()
        class Woman : Person()
    }

印章类和枚举区别

  • Sealed class 更在意类型
  • 枚举更在意数据

image.png

相关文章

  • Kotlin流程控制语句笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin泛型笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin与Java互操作笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin协程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin空指针安全(null-safety)笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin函数式编程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin面向对象编程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin类型系统笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin委托(Delegation)笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin语言基础笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

网友评论

    本文标题:Kotlin 基础笔记

    本文链接:https://www.haomeiwen.com/subject/vtmaihtx.html