不清楚什么是类型强制转换,但我的理解是它与强制类型相似。这告诉我有关分配类型的信息,但这两者之间有什么区别?
有时候我什至看到var问候:String =“ hello” as String
答案 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中,允许同时使用null
和String?
的类型称为var
。
要让您的null
接受var s: String? = "hello"
值,可以使用"hello"
显式指定类型。但是,您也可以通过编写String?
将val s = "hello" as String?
强制转换为String
类型,以便类型推断选择该新类型。我认为最后一个版本是不必要的混淆,我会避免使用它,但为了公平起见,它们是罕见的情况,例如如果没有像您的示例中那样好的方法来指定显式类型,那么从String?
到}
会很方便。