在Kotlin中,var s:String =“ hello”和var s =“ hello” as String有什么区别?

时间:2019-05-05 02:06:17

标签: kotlin

不清楚什么是类型强制转换,但我的理解是它与强制类型相似。这告诉我有关分配类型的信息,但这两者之间有什么区别?

有时候我什至看到var问候:String =“ hello” as String

2 个答案:

答案 0 :(得分:1)

var s : String = "hello"是可变变量的常规声明,其绝对值是字符串。如果您重视他人,那将是错误的。 然后 Var s = "hello" as String正在将Hello值转换为String,然后将该值存储到变量s。我认为两者之间的区别在于执行顺序。在这种情况下,您首先要告诉数据类型,但是在第二种情况下,您的类型数据不是很清楚,但是即使结果相同,也将值强制转换为字符串

答案 1 :(得分:1)

如果您写var s = "hello"String,则变量具有null的类型-并不奇怪。

但是,这意味着您不能在该var中存储String的值,因为类型String在Kotlin中不是“可为空”。在Kotlin中,允许同时使用nullString?的类型称为var

要让您的null接受var s: String? = "hello"值,可以使用"hello"显式指定类型。但是,您也可以通过编写String?val s = "hello" as String?强制转换为String类型,以便类型推断选择该新类型。我认为最后一个版本是不必要的混淆,我会避免使用它,但为了公平起见,它们是罕见的情况,例如如果没有像您的示例中那样好的方法来指定显式类型,那么从String?}会很方便。