Kotlin 有而 Java 没有的东西

4 篇文章 0 订阅
本文深入探讨了Kotlin编程语言相对于Java的独特优势,特别是空安全特性,如何通过类型系统防止NullPointerException。此外,还介绍了可空类型的集合、Lambda表达式与内联函数的高效组合、扩展函数、智能类型转换以及数据类等核心概念,展示了Kotlin如何提升代码质量和安全性。
摘要由CSDN通过智能技术生成

Kotlin 有而 Java 没有的东西


空安全:空引用由类型系统控制


  许多编程语言(包括 Java)中最常见的陷阱之⼀是访问空引用的成员,导致空引用异常。在 Java 中,这等同于 NullPointerException 或简称 NPE 。 Kotlin 的类型系统旨在从我们的代码中消除 NullPointerExceptionNPE 的唯一可能的原因可能是

  • 显式调用 throw NullPointerException()
  • 使用了下文描述的 !! 操作符 : 会抛出 NPE 异常
  • 外部 Java 代码导致的
  • 对于初始化,有一些数据不⼀致(如一个未初始化的 this 用于构造函数的某个地方)

在 Kotlin 中,类型系统区分⼀个引⽤可以容纳 null(可空引⽤)还是不能容纳(⾮空引⽤)。
在这里插入图片描述
如果要允许为空,我们可以声明⼀个变量为可空字符串,写作 String? :

fun main() {
    var b: String? = "abc"
    b = null // ok
    println(b?.length)
    val l = b?.length ?: -1 // Elvis 操作符
    println(l)
    println(b?.toInt() ?: -1)
    println(b!!.toInt())
}

在这里插入图片描述

可空类型的集合

fun main() {
    val nullableList: List<Int?> = listOf(1, 2, null, 4)
    val intList: List<Int> = nullableList.filterNotNull()
    println(nullableList)
    println(intList)
}

在这里插入图片描述


Lambda 表达式 + 内联函数 = 高性能自定义控制结构


Lambda 表达式⼀个简短的概述:

  • lambda 表达式总是被大括号括着,
  • 其参数(如果有的话)在 -> 之前声明(参数类型可以省略),
  • 函数体(如果存在的话)在 -> 后⾯。

扩展函数


智能类型转换


字符串模板


属性


主构造函数


一等公民的委托


变量和属性类型的类型推断


单例


声明处型变 & 类型投影


区间表达式


操作符重载


伴生对象


数据类


分离用于只读和可变集合的接口


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xhBruce

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

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

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

打赏作者

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

抵扣说明:

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

余额充值