当前位置: 首页 > 知识库问答 >
问题:

是和…一样的事?。在科特林?[副本]

石喜
2023-03-14

我读过使用“!!”而不是“?。“在kotlin中不推荐。检查变量中的null时,2有什么区别?

共有3个答案

岳泉
2023-03-14

不,两者是不同的。

!!运算符在kotlin中称为双爆炸运算符。这意味着您的字段不可为空。当特定的可为空字段为空时,它会抛出NullPointerException。

var s :String? = null
var b :String = s!!.lowerCase() // It will throw null pointer exception as you are asserting nullable variable as non null

是<code>空安全调用运算符用于对特定字段进行空安全访问。

var s :String? = null
var b :String? = s?.lowerCase() //Here lowerCase will not execute because you are making safe call only if value is not null.

var s :String? = null
var b :String = b?.lowerCase() ?: ""

额外的事情,如果你需要b为非空在Safecall运算符,你可以使用?:(elvis)运算符有默认值,如果以前的安全调用语句为空。

衡修洁
2023-03-14

"?."和"!!"是不同的. "?." 操作符也称为安全调用操作符,用于从可空对象安全地访问属性

请参阅此链接

鉴于"!!"称为非空断言运算符,它强制将可空类型表示为非空。使用此运算符而不检查null将导致NullPointerException。

请参阅此链接

弓嘉纳
2023-03-14

!!-是开发人员告诉编译器的方式,相信我,我知道这个值不会为空。这是一种将可空值转换为不可空类型的不安全方式。不安全意味着如果值确实为空,它可以抛出NullPointerException

您可以在此处阅读更多相关信息。

?。-是开发人员告诉编译器的方式,在值不为空的情况下,其余的逻辑是否遵循?。符号。这种方式是访问可空类型的安全方式。

您可以在此处阅读更多相关信息

 类似资料: