Kotlin 中可空类型和不可空类型有什么区别

What is the difference between nullabe and non-nullable type in Kotlin

请解释可空类型和不可空类型的区别。我是科特林的新手,我很困惑。
谢谢

Nullable 类型可以容纳 nulls。当类型可为 null 时,在其类型后设置问号:

val str: String? = null

不可为空的 类型不能容纳 nulls:

val str: String = "some value"

如果我们尝试将 null 值设置为 Non-nullable 类型,IDE 将给出错误并且代码将未被编译:

val str: String = null // error, the code won't compile

Here you can read more about Null Safety.

当一个变量具有可空类型时,该变量可以有值或者它也可以有值 null 并且程序不会像大多数基于 java 的程序一样强制关闭 空指针异常 条错误消息。

例如:

val data: DataResponse? = null

它比你使用 val data: String 节省更多,因为当你使用它时你的 data variabel 没有值或 null程序当时没有强行关闭。 您可以像这样使用 data 变量:

your_text.text = data 

并且您的代码不会强制关闭。

但如果您的代码是这样的,则表示 nonNullable

val data: DataResponse

您的应用程序将在您使用变量时强制关闭