Kotlin-2

作者: 王世军Steven | 来源:发表于2017-11-29 00:18 被阅读9次

    1. 四种函数

    package com.brain.day2
    
    /**
     * 四种函数
     */
    fun main(args: Array<String>) {
        saySomething()
        println(saySomethingAndReturnString())
        saySomethingAndInString("Jack")
        println(saySomethingAndInStringReturnString("Tim"))
    }
    
    /**
     * 没有参数无返回值
     */
    fun saySomething() {
        println("Hello World")
    }
    
    /**
     * 无参数有返回值。
     */
    fun saySomethingAndReturnString(): String {
        println("saySomethingAndReturnString")
        return "saySomethingAndReturnString"
    }
    
    /**
     * 有参数,有返回值。
     */
    fun saySomethingAndInStringReturnString(name: String): String {
        println(name)
        return "You Name $name"
    }
    
    fun saySomethingAndInString(name: String) {
        println("You name : $name")
    }
    

    2. 字符串模版

    package com.brain.day2
    
    /**
     * 字符串模版
     * 格式 : "${变量}"
     * 如果是单独一个变量可以省略 “{}”
     */
    fun main(args: Array<String>) {
        val i1 = 12
        val i2 = 13
        val name = "Jack"
        val age = 11
    
        println("My name is $name , My age is $age")
        println("i1 + i2 = ${i1 + i2}")
    }
    

    3. for循环

    package com.brain.day2
    
    /**
     * For循环
     */
    fun main(args: Array<String>) {
        forInFunc()
        forEachFunc()
    }
    
    /**
     * 测试 for in
     */
    fun forInFunc() {
        val text = "0123456789"
        // 1. 遍历所有的元素。
        print("所有的元素 : ")
        for (char in text) {
            print(" $char")
        }
        println()
    
        // 2. 带有下标的元素
        for ((index, char) in text.withIndex()) {
            print("text[${index}]=$char ")
        }
        println()
    }
    
    /**
     * 高级ForEach
     */
    fun forEachFunc() {
        val text = "I am Jack"
        // 1. 没有index
        text.forEach {
            print("$it")
        }
        println()
        // 2. 有 index
        text.forEachIndexed { index, char ->
            print("$index : $char  ")
        }
        println()
    }
    
    

    4. 标签处返回

    package com.brain.day2
    
    /**
     * s1和s2两两组合有几种可能
     * 1. 在循环开始出使用 “label@” 设置标签。使用"break@label" 跳出循环
     */
    fun main(args: Array<String>) {
        val text1 = "012345"
        val text2 = "012345"
    
        // 标签处跳转。
        label1@for (t1 in text1) {
            label2@for (t2 in text2) {
                if (t2 == '3') {
                    break@label2
                }
            }
            if (t1 == '3') {
                break@label1
            }
        }
    }
    

    5. range区间

    package com.brain.day2
    
    /**
     * [1,100]  包含1 包含100
     * [1,100)  包含1 不包含100 最大99
     */
    fun main(args: Array<String>) {
    
        //定义一个从1到100的数据类型
        //java定义数组 或者集合 添加元素
        val range = 1..100          // [1,100] 最大100
        val range1 = 1 until 100    // [1,100)  最大99
        val range2 = 10 downTo 1    // [10,1]
        val range3 = 'a'..'z'       // [a,z]
        val range4 = 'a' until 'z'  // [a,z]
        val longRange = 1L..100L    // [1, 100]
    
        println(range2.last)
        println(range1.last)
    
        // 区间的遍历可以采用For循环的任何一种形式。
        range.forEach {  }
        range.forEachIndexed { index, i ->  }
        for (r in range) {
    
        }
        for ((index, r) in range.withIndex()) {
    
        }
    
        // 区间翻转
        val reversed = range.reversed()
    }
    

    6. if语句

    package com.brain.day2
    
    /**
     * kotlin的if有返回值  {}最后一行为返回值
     */
    fun main(args: Array<String>) {
        val b = 20
        val a = 15
        println(findBig0(a, b))
        println(findBig1(a, b))
        println(findBig2(a, b))
    }
    
    /**
     * 标准写法, 注意只有一行可以省略大括号。
     */
    fun findBig0(a: Int, b: Int):Int {
        if (a > b) {
            return a
        } else {
            return b
        }
    }
    
    /**
     * 简化 1
     */
    fun findBig1(a: Int, b: Int):Int {
        // 类似三木运算符
        if (a > b) return a else return b
    }
    
    /**
     * 简化 2
     */
    fun findBig2(a: Int, b: Int):Int {
        return if (a > b) a else b
    }
    
    
    
    
    

    7. 数组

    package com.brain.day2
    
    /**
     * 相同数据类型元素的集合
    */
    fun main(args: Array<String>) {
        arrayTypeFunc()
        accessArrayElements()
        modifyArrayElements()
    }
    
    /**
     * 数组元素的修改
     * 1. 下标
     * 2. set(index, value)
     */
    fun modifyArrayElements() {
        //1. index
        val intArrayOf = intArrayOf(12, 13, 11)
        intArrayOf[0] = 0
        // set
        intArrayOf.set(1,1)
    
        println(intArrayOf[0])
        println(intArrayOf.get(1))
    }
    
    /**
     * 遍历数组可以使用For循环
     */
    fun accessArrayElements() {
        val intArrayOf = intArrayOf(12, 11, 10)
        for (el in intArrayOf) {
    
        }
    
        for ((index, el) in intArrayOf.withIndex()) {
    
        }
    
        intArrayOf.forEach {  }
        intArrayOf.forEachIndexed { index, i ->  }
    }
    
    /**
     * 数组定义
     */
    private fun arrayTypeFunc() {
        val arr = arrayOf(1, 2)
        //张三  李四  王五
        //定义数组保存三个姓名
        val array = arrayOf("张三", "李四", "王五")
        //Boolean
        //Byte
        //Char
        //Short
        //Int
        //Float
        //Double
        //Long
        val booleanArrayOf = booleanArrayOf(true, false, true, false)
        val byteArrayOf = byteArrayOf(0x00, 0x01)
        val charArrayOf = charArrayOf('a', 'z')
        val shortArrayOf = shortArrayOf(11, 12)
        val intArrayOf = intArrayOf(1, 2, 3)
        val floatArrayOf = floatArrayOf(12.11f, 13.11f)
        val doubleArrayOf = doubleArrayOf(12.11, 112.22)
        val longArrayOf = longArrayOf(12L, 12L)
    }
    

    8. when表达式

    package com.brain.day2
    
    /**
     * when分支判断语句
     * switch类似  char short int 枚举  字符串
     * when表达式可以支持任意类型以及条件
     */
    fun main(args: Array<String>) {
        println(todo(12))
        println(todo1(8))
        println(todo3(2))
    }
    
    /**
     * 高级用法3 返回值
     */
    fun todo3(age: Int): String {
        return when (age) {
            in 1..5 -> {
                "1..5"// 最后一行是返回之。
            }
            12 -> "12"
            else -> "else"
        }
    }
    
    /**
     * 高级用法2 不用参数
     */
    fun todo2(age: Int): String {
        when {
            age == 12 -> return "12"
            age in 1..3 -> return "1..3"
            else -> return "else"
        }
    }
    
    /**
     * 高级用法1, 区间
     */
    fun todo1(age: Int): String {
        when (age) {
            in 1..6 -> return "1~6"
            in 7..10 -> return "7~10"
            12,13 -> return "12,13"
            14 -> return "14"
            else -> return "else"
        }
    }
    
    /**
     * 基础用法
     */
    fun todo(age:Int):String{
        when(age) {
            7 -> return "开始上小学了"  //如果只有一行可以省略{}
    
            12 -> {
                return "开始上中学了"
            }
            15 -> {
                return "开始上高中了"
            }
            18 -> {
                return "开始上大学了"
            }
            else -> {
                return "开始上社会大学"
            }
        }
    }
    

    9. 函数表达式

    package com.brain.day2
    
    /**
     * kotlin 函数和对象都是一等公民  平等的
     */
    fun main(args: Array<String>) {
        println(add0(1, 1))
        println(add1(1, 1))
        println(add2(1, 1))
    
        // 具名参数。
        println(add3(b = 22))
        // 可变参数
        println(add4(1, 2, 3, 4))
    
    }
    
    /**
     * 具名参数 : 指定要赋值的参数
     */
    fun addFunc0() {
        add0(12, b = 12)
    }
    
    //----------------- 格式
    
    /**
     * 标准
     */
    fun add0(a: Int, b: Int):Int {
        return a + b
    }
    
    /**
     * 高级1 : 如果只有一行代码,可以省略大括号。
     */
    fun add1(a: Int, b: Int): Int = a + b
    
    /**
     * 高级2 : 返回值也可以省略
     */
    fun add2(a: Int, b: Int) = a + b
    
    /**
     * 默认参数
     */
    fun add3(a: Int = 12, b: Int) = a + b
    
    /**
     * 可变参数
     */
    fun add4(vararg params: Int): Int {
        var sum = 0
        params.forEach {
            sum += it
        }
        return sum
    }
    

    10. 异常处理

    package com.brain.day2
    
    /**
     * 异常处理
     */
    fun main(args: Array<String>) {
        val a = 1
        val b = 0
        try {
            // 发生异常了。
            val c = a / b//ArithmeticException   分母为0
        } catch (e: Exception) {
            println("捕获到异常了")
        }finally {
            println("都会执行的")
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Kotlin-2

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