kotlin基础之空指针检查、字符串表达式、函数默认值

Kotlin 的空指针检查

Kotlin 是一种空安全的语言,这意味着它强制开发者明确地处理可能的空值。在 Kotlin 中,所有的变量默认都是非空的,除非显式地标记为可为空。

声明可为空的变量

你可以通过在类型后面添加 ? 来声明一个变量可以为空:

|---|--------------------------------------|
| | var nullableString: String? = null |

安全调用操作符(?.)

当你不确定一个对象是否为空时,可以使用安全调用操作符(?.)来避免空指针异常。如果对象是空的,则整个表达式的结果也是 null,而不会抛出异常。

复制代码

|---|-----------------------------------------------------------------------|
| | nullableString?.length // 如果 nullableString 为 null,则返回 null;否则返回其长度 |

非空断言操作符(!!)

如果你确定一个对象不为空,但编译器无法推断出这一点,你可以使用非空断言操作符(!!)来告诉编译器该对象非空。但是,如果对象实际上是空的,使用 !! 将会抛出 NullPointerException

|---|---------------------------------------------------------------------------------------------|
| | val length = nullableString!!.length // 如果 nullableString 为 null,则抛出 NullPointerException |

Elvis 操作符(?:)

Elvis 操作符(?:)允许你提供一个默认值,当左侧表达式为 null 时返回这个默认值。

|---|---------------------------------------------------------------------------------------|
| | val lengthOrDefault = nullableString?.length ?: 0 // 如果 nullableString 为 null,则返回 0 |

字符串内嵌表达式

Kotlin 允许你在字符串字面量中嵌入表达式,这通常被称为字符串模板。你可以使用 $ 符号来引用变量或表达式,并将其嵌入到字符串中。

字符串模板

|---|--------------------------------------------------------|
| | val name = "Kotlin" |
| | val greeting = "Hello, $name!" // 输出:Hello, Kotlin! |
| | |
| | val sum = 1 + 2 |
| | val result = "The sum is $sum" // 输出:The sum is 3 |

如果你需要在字符串模板中嵌入更复杂的表达式,可以使用花括号 {} 来包围表达式。

|---|---------------------------------------------------------------------------------|
| | val price = 10.5 |
| | val formattedPrice = "The price is |
| | $$ |
| | {price.format(Locale.getDefault(), "%.2f").trim()}" // 输出:The price is $10.50 |

函数的参数默认值

在 Kotlin 中,你可以为函数的参数提供默认值,这使得函数调用更加灵活。当调用函数时,可以省略具有默认值的参数。

带有默认值的函数参数

|---|----------------------------------------------------------------|
| | fun greet(name: String, prefix: String = "Hello"): String { |
| | return "$prefix, $name!" |
| | } |
| | |
| | // 调用函数时,可以省略 prefix 参数 |
| | val greeting = greet("Kotlin") // 输出:Hello, Kotlin! |
| | |
| | // 也可以明确指定 prefix 参数 |
| | val customGreeting = greet("Kotlin", "Hi") // 输出:Hi, Kotlin! |

在上面的例子中,greet 函数有一个名为 name 的必需参数和一个名为 prefix 的可选参数(带有默认值 "Hello")。当调用 greet 函数时,可以省略 prefix 参数,因为它有一个默认值。如果你需要提供一个不同的前缀,可以明确指定它。

相关推荐
xh didida13 小时前
算法 -- 位运算
开发语言·c++·算法
谙弆悕博士13 小时前
快速学C语言——第2章:编程规范与代码风格
服务器·c语言·开发语言·经验分享·程序人生·学习方法·业界资讯
byzh_rc13 小时前
[AI编程从入门到入土] 装饰器decorator
开发语言·python·ai编程
贫民窟的勇敢爷们14 小时前
Java 与 Python 如何选型与融合
java·开发语言·python
流氓也是种气质 _Cookie14 小时前
Chrome Performance常见名词解释(FP, FCP, LCP, DCL, FMP, TTI, TBT, FID, CLS)
开发语言·javascript·ecmascript
gihigo199814 小时前
基于MATLAB的LTE物理层仿真系统
开发语言·matlab
刚子编程14 小时前
C# Join 实战:左连接写法、字符串拼接与 EF Core 性能调优
开发语言·c#·solr·join
fie888914 小时前
基于粒子群优化(PSO)算法的带STATCOM的IEEE 30节点系统最优潮流MATLAB实现
开发语言·算法·matlab
Stream_Silver14 小时前
【JNA实战:Java无缝调用Windows API模拟键盘输入】
java·开发语言·windows
焦糖玛奇朵婷15 小时前
回收小程序开发案例分享
java·开发语言