【Kotlin基础系列】第2章 基本语法(2)

23 篇文章 1 订阅
这篇博客介绍了Kotlin编程的基础知识,包括如何创建类和实例,展示了集合的创建、迭代、过滤和映射操作。此外,还详细解释了Kotlin中的空值处理,以及如何进行类型检测和自动类型转换。示例代码清晰地说明了这些概念的使用方法。
摘要由CSDN通过智能技术生成

1.1 创建类与实例

        类的属性可以在其声明或主体中列出。具有类声明中所列参数的默认构造函数会自动可用。类之间继承由冒号(:)声明。默认情况下类都是 final 的;如需让一个类可继承, 请将其标记为 open

open class Shape

class Rectangle(var height: Double, var length: Double): Shape() {
    var perimeter = (height + length) * 2 
}


fun main() {
    val rectangle = Rectangle(5.0, 2.0)
    println("The perimeter is ${rectangle.perimeter}")
}

1.2 集合

        通过listOf创建集合对象,

fun main() {
    val items = listOf("apple", "banana", "kiwifruit")
    // 对集合进行迭代。
    for (item in items) {
        println(item)
    }

    // 使用 in 操作符来判断集合内是否包含某实例。
    when {
        "apple" in items -> println("apple")
        "banana" in items -> println("banana")
        "kiwifruit" in items -> println("kiwifruit")
    }

    // 使用 lambda 表达式来过滤(filter)与映射(map)集合
    items
        .filter { it.startsWith("a") }
        .sortedBy { it }
        .map { it.uppercase() }
        .forEach { println(it) }
}

1.3 空值与空检测

当可能用 null 值时,必须将引用显式标记为可空。可空类型名称以问号(?)结尾。

// 如果 str 的内容不是数字返回 null
fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}

fun printProduct(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)

    // x为null的情况
    if (x == null) {
        println("Wrong number format in arg1: '$arg1'")
        return
    }

    // y为null的情况
    if (y == null) {
        println("Wrong number format in arg2: '$arg2'")
        return
    }

    // 在空检测后,x 与 y 会自动转换为非空值
    println(x * y)
}

fun main() {
    printProduct("1", "a")
}

1.4 类型检测与自动类型转换

is 操作符检测一个表达式是否某类型的一个实例。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换:

fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        // `obj` 在该条件分支内自动转换成 `String`
        return obj.length
    }

    if (obj !is String) {
        // `obj` 不是 `String`的情况,直接返回null
        return null
    }

    // 在离开类型检测分支后,`obj` 仍然是 `Any` 类型
    return null
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Yvan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值