看例子代码,学kotlin语法(1.2)(基本语法)

本人喜欢学习一门语言,在有一定了解之后,从他们的简单demo开始,一边学习,一边敲代码。每个人都有适合自己的一套学习方法,取其精华,去其糟粕。

相关链接
在线学习
Kotlin 官方文档
中文站(更新到 1.1):https://www.kotlincn.net/
网址(更新到 1.0.3):http://tanfujun.com/kotlin-web-site-cn/
Kotlin 中文论坛:https://www.kotliner.cn/
《Kotlin for android developers》中文版翻译
语言学习网址:RUNOOB备注:里面的虚拟机模拟适合小demo调试,程序太大还是建议到AS中。

1、使用条件表达式if

/**
 * 比较a、b的较大值
 * if (a > b)是一个表达式,返回一个值,然后赋值给max函数返回值
 */
fun main(args: Array<String>) {
    println(max(args[0].toInt(), args[1].toInt()))
}

fun max(a: Int, b: Int) = if (a > b) a else b

2、空检查(?)

/**
 * 将引用显示标记为可为空,才能取到null的值
 */
package multiplier

// 如果str不包含数字,返回null
fun parseInt(str: String): Int? {
    try {
        return str.toInt()
    } catch (e: NumberFormatException) {
        println("One of the arguments isn't Int")
    }
    return null
}

fun main(args: Array<String>) {
    if (args.size < 2) {
        println("No number supplied");
    } else {
        val x = parseInt(args[0])
        val y = parseInt(args[1])

        // We cannot say 'x * y' now because they may hold nulls
        if (x != null && y != null) {
            print(x * y) // Now we can
        } else {
            println("One of the arguments is null")
    }
    }
}

3、is 运算符

/**
  * is运算符检查是否是实例
  * 如果是不可变的局部变量或属性,则可不用使用is
 */
fun main(args: Array<String>) {
    println(getStringLength("aaa"))
    println(getStringLength(1))
}

fun getStringLength(obj: Any): Int? {
    if (obj is String)
        return obj.length // 不需要强制转换为String
    return null
}

4、while

/**
 * `while` and `do..while` 与java的差不多
 */
fun main(args: Array<String>) {
    var i = 0
    while (i < args.size)
        println(args[i++])
}

5、for循环

/**
 * for循环提供迭代器所有的内容
 */
fun main(args: Array<String>) {
    for (arg in args)
        println(arg)

    // or
    println()
    for (i in args.indices)
        println(args[i])
}

6、范围判断语句

/**
 * 判断数字在范围内
 * 判断数字是否超出范围
 *判断集合是否包含对象
 * See http://kotlinlang.org/docs/reference/ranges.html#ranges
 */

fun main(args: Array<String>) {
    val x = args[0].toInt()
    //数字是否在范围内
    val y = 10
    if (x in 1..y - 1)
        println("OK")

    //迭代范围
    for (a in 1..5)
        print("${a} ")

    //数字是否超出范围
    println()
    val array = arrayListOf<String>()
    array.add("aaa")
    array.add("bbb")
    array.add("ccc")

    if (x !in 0..array.size - 1)
        println("Out: array has only ${array.size} elements. x = ${x}")

    //数组是否包含对象
    if ("aaa" in array) // collection.contains(obj)被调用
        println("Yes: array contains aaa")

    if ("ddd" in array) // collection.contains(obj) 被调用
        println("Yes: array contains ddd")
    else
        println("No: array doesn't contains ddd")
}

7、when

/**
 * when子式可以是常量、变量、返回数值的表达式、
 * 返回Boolean值的表达式,强大到用来替换if...else if
 */

fun main(args: Array<String>) {
    cases("Hello")
    cases(1)
    cases(0L)
    cases(MyClass())
    cases("hello")
}

fun cases(obj: Any) {
    when (obj) {
        1 -> println("One")
        "Hello" -> println("Greeting")
        is Long -> println("Long")
        !is String -> println("Not a string")
        else -> println("Unknown")
    }
}

class MyClass() {
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值