我问自己:
如果在某些情况下Java的类型完全不变,为什么Java会称其为类型转换?
让我们看一个简单的例子:
String s =“ a”;
对象o = s;
这很好用,因为它是不断扩大的参考转换。但是,在这种情况下,什么都不能转换。编译第二个赋值语句时,编译器会看到右表达式具有与左表达式不同的其他类型。但这并不意味着编译错误,因为Object是String的超类型。因此,允许将存储在s中的参考存储在o中。因此,实际上,这里没有类型被转换。
或者这是错误的吗?
答案 0 :(得分:0)
值得记住的是,s
是String
的引用,而不是字符串。
当您将引用分配给Object
引用时,引用的类型会更改,但是引用和所引用的对象保持不变。
由于没有数据被更改,因此没有实际操作。这只会改变编译器检查其值的方式。注意:真正的CPU在运行时没有任何检查要执行。对于CPU来说,它只是对象的地址。
c.f。对于基元,将其分配给其他类型会更改数据。