美文网首页
KT-使用手册

KT-使用手册

作者: JackDaddy | 来源:发表于2020-11-11 21:53 被阅读0次

本文只是提供给入门级的 KT 学者,提供最基本的 KT 使用方法,会持续更新补充~

1. 变量

  • 可变变量定义: var 关键字
    eg:var <标识符> :<类型> = <初始化值>

  • 不可变变量定义:val 关键字,只能赋值一次的变量(有一点点类似Java中final修饰的变量)
    eg:val <标识符> : <类型> = <初始化值>

class Test {

    // 可以改,可以读  get  set
    var info1 : String = "A"

    // 只能读, 只有 get
    val info2 : String = "B"
}

2. 方法

// 返回类型Int
fun add(number1: Int, number2: Int): Int {
    return number1 + number2
}

// 返回类型  == 类型推导 String
fun add3(number1: Int, number2: Int) = "AAA"

// 可变参数 (可变长 参数函数)
fun lenMethod(vararg value: Int) {
    for (i in value) {
        println(i)
    }
}

// void == :Unit
fun main(): Unit {
    // lambda表达式函数
    val addMethod : (Int, Int) -> Int = {number1, number2 -> number1 + number2}
    val r= addMethod(9, 9)
    println(r)
}

3. 字符串

// $ 表示一个变量名或者变量值

// $varName 表示变量值

// ${varName.fun()} 表示变量的方法返回值

val name = "张三"

val age = 28

val sex = 'M'

val info = "ABCDEFG"

println("name:$name,  age:$age,  sex:$sex  info:$info")  // 相较于 Java 的 + 使用起来更方便

4. NULL 检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,
有两种处理方式:
1:字段后加!!像Java一样抛出空异常
2:另一种字段后加?

var info: String? = null

println(info?.length)  // 第一种补救:? 如果info是null,就不执行 .length

println(info!!.length) // 第2种补救: !! 我自己负责info 不会为null ==  (不管null不null必须执行)  ==  Java

if (info != null)           // 第3种补救:  ==  Java
println(info.length)

println(info?.length           ?: "你很牛逼")  //  ?:  如果你一定要输出null  就让你  “你很牛逼”

// : Int? === 允许返回null
fun testMethod(name: String) : Int? {
    if (name == "zs") {
        return 99999
    }
    return null
}

5. 区间

    // 1 到 9
    for (i in 1..9) {
        // println(i)
    }

    // 不会输出
    for (i in 9..1) {
        // println(i)
    }

    // 大 到 小
    for (i in 9 downTo 1) {
        // println(i)
    }

    // 用区间做判断
    val value = 88
    if (value in 1..100) {
        // println("包了 1 到 100")
    }

    // 步长指定
    for (i in 1..20 step 2) {
        // 1 3 5 7 ...
        // println(i)
    }

    // 排除 最后元素
    for (i in 1 until 10) {
        println(i)
    }

6. 比较

    val name1: String = "张三"
    val name2: String = "张三"

    // === 比较值本身
    // == 等价 Java的equals
    println(name1.equals(name2)) //false
    println(name1 == name2) //true


    // ===  比较对象地址
    val test1:Int? =  10000
    val test2:Int? =  10000
    println(test1 === test2) // false

7. 数组

    // 第一种形式
    val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
    // println(numbers[0])
    // println(numbers[7])
    for (number in numbers) {
        // println(number)
    }

    // 第二种形式  value=0
    // 0 + 200 = 200
    // 1 + 200 = 201
    val numbers2 = Array(10,  {value: Int -> (value + 200) })
    for (value in numbers2) {
        println(value)
    }

8. 条件判断

// 表达式 比 大小 最大值
val maxValue = if (number1 > number2) number1 else number2

 val max: Int = if (number1 > number2) {
        println("number1是最大的哦")
        // TODO
        // ....... 省略 200行代码
        number1
    } else {
        println("number2是最大的哦")
        // TODO
        // .......  省略 200行代码
        number2
    }

// 使用区间做判断
    val x = 80
    val y = 29
    if (x in 1..10 && y in 1..50) {
        // println("x y 轴 符合")
    } else {
        // println("x y 轴 不符合")
    }

val number = 5
     when(number) {
         1 -> println("一")
         2 -> println("二")
         3 -> println("三")
         4 -> println("四")
         5 -> println("五")
         else -> println("其他")
     }

val number = 3
    val result = when (number) {
        1 -> {
            println("很开心")
            // 很多很多的逻辑..  省略 200行代码
            // ...
            // TODO ....
            "今天是星期一"
            99
        }
        2 -> {
            println("很开心")
            // 很多很多的逻辑..  省略 200行代码
            // ...
            // TODO ....
            "今天是星期二"
            88
        }
        3 -> {
            println("很开心")
            // 很多很多的逻辑..  省略 200行代码
            // ...
            // TODO ....
            "今天是星期三"
            true
            100
        }
        else -> 99
    }

 when (8) {
        1, 2, 3, 4, 5, 6, 7 -> println("满足")
        else -> println("不满足")
    }

9.循环

var items  = listOf<String>("李四", "张三", "王五")
    for (item in items) {
        println(item)
    }

items.forEach {
        println(it)
    }

    for (index in items.indices) {
        println("下标:$index,  对应的值:${items[index]}")
    }

// 自定义标签
    tttt@ for (i in 1..20) {

        for (j in 1..20) {
            println("i:$i, j:$j")

            if (i == 5) {
                // break // j循环 给break

                break@tttt // i循环 给break
            }
        }

    }

10. 类

// public final class Person 默认就是这样的,不能被继承,  可以加open就可以被人家继承了
open class Person(id: Int) // 主构造
{

    // 次构造
    constructor(id: Int, name: String) : this(id) {

    }

    // 次构造
    constructor(id: Int, sex: Char) : this(id) {

    }

    // 次构造
    constructor() : this(787) {

    }

    // lateinit 懒加载  没有赋值 就不能使用,否则报错
    lateinit var name : String

}

相关文章

  • KT-使用手册

    本文只是提供给入门级的 KT 学者,提供最基本的 KT 使用方法,会持续更新补充~ 1. 变量 可变变量定义: v...

  • 包的管理-软件列表

    gem使用手册npm使用手册yarn使用手册pip-使用手册maven-使用手册composer-使用手册 cho...

  • PostMan使用手册

    Postman 使用手册系列教程: Postman软件安装Postman使用手册1——导入导出和发送请求查看响应P...

  • YOU:身体使用手册Ⅱ 罗伊森

    YOU:身体使用手册Ⅱ 罗伊森.pdf: 内容简介······ “自己是自己最好的医生”是《YOU:身体使用手册(...

  • blender3.0使用手册及快捷键大全

    blender在线使用手册[http://dd.ma/6VKc0W6o] blender及网页使用手册下载地址 b...

  • conda

    conda 使用手册1conda 使用手册2conda 环境变量配置 删除虚拟环境:删除环境:使用命令conda ...

  • 《OKR使用手册》读书心得(一) 210115

    《OKR使用手册》读书心得之 OKR与KPl的关系 今天读了《OKR使用手册》,我原来对于OKR与KPI的关系似懂...

  • 小白分享~linux基础知识(一)

    引言 Linux 的开发者们写了丰富详尽的命令使用手册,英语是 manual,Linux 的使用手册可以说是 Li...

  • 2018-08-18

    #易挪宝后台管理使用手册 ##说明

  • Android混淆规则

    写给Android开发者的混淆使用手册

网友评论

      本文标题:KT-使用手册

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