2.Kotlin基础特性

2017-12-17  本文已影响0人  leofight

1.函数

 fun sum(a: Int, b: Int): Int {
    return a + b;
}

函数的声明以关键字fun开始,函数名紧跟其后sum,接下来是括号括起来的参数列表。参数列表的后面跟着返回类型,它们之间用一个冒号隔开。

示例代码

fun main(args: Array<String>) {
    println(sum(1, 2))
    println(sum2(3, 4))
    myPrint(3,7)
}

fun sum(a: Int, b: Int): Int {
    return a + b;
}

fun sum2(a: Int, b: Int) = a + b

fun myPrint(a: Int, b: Int): Unit {//Unit可以省略掉
    println("$a + $b = ${a + b}")//字符串模板
}

-运行结果

3
7
3 + 7 = 10

2. 变量(可变变量和不可变量)

fun multiply(a: Int, b: Int) = a * b

//import com.leofight.kotlin2.multiply

import com.leofight.kotlin2.multiply as myMultiply

fun main(args: Array<String>) {
    val a: Int = 1 //常量 val相当于final
    val b = 2

    var c: Int //变量 var定义变量
    c = 3
    c = 4

    var d = 3
    d = 4

    println(d)

    //kotlin注释
    /**
     * kotlin注释
     */

    /*
    /*
       kotlin 注释
     */
     */

    var x = 10
    var y: Byte = 20

    x = y.toInt() //kotlin 不允许把 byte 赋值给 int

    println(x)

    //println(multiply(2,3))//需要导入Calculation中的multiply
    println(myMultiply(2, 3))


    val m = intArrayOf(1, 2, 3)

    //m = intArrayOf(4,5)//不可修改

    m.set(0, 4)//常量中第一个元素修改成4

    for (item in m) {
        println(item)
    }


}
4
20
6
4
2
3

3. 流程控制

语句和表达式
 在kotlin中,if是表达式,而不是语句。语句和表达式的区别在于,表达式有值,并且能作为另一个表达式的一部分使用;而语句总是包围着它的代码块中的顶层元素,并且没有自己的值。在Java中,所有的控制结构都是语句。而在Kotlin中,除了循环(for、do和do/while)以为大多数控制结构都是表达式。这种结合控制结构和其他表达式的能力让你可以简明扼要地表示许多常见的模式。


fun main(args: Array<String>) {

    //第一种方式
    var x1 = 10
    var y1 = 20

    var max1: Int
    var min1: Int

    if (x1 > y1) {
        max1 = x1
        min1 = y1
    } else {
        max1 = y1
        min1 = x1
    }

    println("max1 = $max1,min1 = $min1")

    //第二种方式,等同方法一

    var x2 = 10
    var y2 = 20

    var max2 = if (x2 > y2) x2 else y2
    var min2 = if (x2 > y2) y2 else x2

    println("max2 = $max2,min2 = $min2")

    //第三种方式
    var x3 = 10
    var y3 = 20

    var max3 = if (x3 > y3) {
        println("x3 > y3")
        x3
    } else {
        println("x3 <= y3")
        y3
    }

    var min3 = if (x3 > y3) {
        println("x3 > y3")
        y3
    } else {
        println("x3 <= y3")
        x3
    }

    println("max3 = $max3,min3 = $min3")

}
max1 = 20,min1 = 10
max2 = 20,min2 = 10
x3 <= y3
x3 <= y3
max3 = 20,min3 = 10

4. Kotlin中的异常


fun main(args: Array<String>) {
    println(conver2Int("123"))

    printMultiply("2", "3")

    printMultiply("2", "a")

    printMultiply2("3", "4")
}

fun conver2Int(str: String): Int? {//? 类似optional 可能为空 防止空指针异常
    try {
        return str.toInt()
    } catch (ex: NumberFormatException) {
        return null
    }
}

fun printMultiply(a: String, b: String) {
    var a2Int = conver2Int(a)
    var b2Int = conver2Int(b)

    if (null != a2Int && null != b2Int) {
        println(a2Int * b2Int)
    } else {
        println("param not int")
    }
}

fun printMultiply2(a: String, b: String) {
    var a2Int = conver2Int(a)
    var b2Int = conver2Int(b)

    //println(a2Int * b2Int) //无法编译通过 required int found int?

    if (null == a2Int) {
        println("param not int")
    } else if (null == b2Int) {
        println("param not int")
    } else {
        println(a2Int * b2Int)
    }
}
123
6
param not int
12

和Java最大区别就是throws子句没出现在代码中。Kotlin不区分受检查异常和未受检查异常。不用指定函数抛出的异常,而且可以处理也可以不处理异常。

上一篇下一篇

猜你喜欢

热点阅读