美文网首页
2.Kotlin基础特性

2.Kotlin基础特性

作者: leofight | 来源:发表于2017-12-17 18:15 被阅读0次

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. 变量(可变变量和不可变量)

  • 声明变量的关键字有两个:
     1. val(来自于value)----不可变引用。使用val声明的变量不能在初始化之后再次赋值。它对应的是Java的final变量。即常量。
     2. var(来自variable)-----可变引用。这种变量的值可以被改变。这种声明对应的时普通(非final)的Java变量。即变量。
  • 示例代码:
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不区分受检查异常和未受检查异常。不用指定函数抛出的异常,而且可以处理也可以不处理异常。

相关文章

  • 2.Kotlin基础特性

    1.函数 声明一个函数 函数的声明以关键字fun开始,函数名紧跟其后sum,接下来是括号括起来的参数列表。参数列表...

  • Kotlin | 2.Kotlin基础

    声明函数、变量、类、枚举以及类型Kotlin中的控制结构智能转换抛出和处理异常 函数学习 函数和变量 函数 变量 ...

  • Kotlin成安卓开发官方语言,我们如何学习它【转】

    以下内容非原创,转发自 逆流的鱼yuiop 何俊林 1.摘要2.Kotlin是什么?3.Kotlin的特性4.如何...

  • 2.kotlin基础:控制结构

    1.函数 1>函数体可以房子等号后面;函数可以直接赋给一个变量时 函数名不用写。 2.Lambda表达式 就是匿名...

  • 编程语言-c

    一、基础 二、高级特性

  • Kotlin 匿名函数简写小技巧

    kotlin 匿名函数简写小技巧 1.Java格式 2.Kotlin格式

  • shell 编程

    回顾: bash 的基础特性(3)

  • 2.Kotlin初识

    新建kotlin类 新建Activity如下 可以看到跟java不一样的地方,:代表继承, fun代表方法。在ko...

  • Linux之bash

    bash的基础特性之 IO重定向及管理 ] IO重定向: 输入重定向: 管道 bash基础特性之自动补充命令 ba...

  • css基础特性

    一、css权重问题: !important > 行内 > id > class 二、常见的行内块级元素: 1、常见...

网友评论

      本文标题:2.Kotlin基础特性

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