Java类型转换:转换实际上在哪里?

时间:2019-03-17 09:35:21

标签: java types reference

我问自己:

如果在某些情况下Java的类型完全不变,为什么Java会称其为类型转换?

让我们看一个简单的例子:

String s =“ a”;

对象o = s;

这很好用,因为它是不断扩大的参考转换。但是,在这种情况下,什么都不能转换。编译第二个赋值语句时,编译器会看到右表达式具有与左表达式不同的其他类型。但这并不意味着编译错误,因为Object是String的超类型。因此,允许将存储在s中的参考存储在o中。因此,实际上,这里没有类型被转换。

或者这是错误的吗?

1 个答案:

答案 0 :(得分:0)

值得记住的是,sString引用,而不是字符串。

当您将引用分配给Object引用时,引用的类型会更改,但是引用和所引用的对象保持不变。

由于没有数据被更改,因此没有实际操作。这只会改变编译器检查其值的方式。注意:真正的CPU在运行时没有任何检查要执行。对于CPU来说,它只是对象的地址。

c.f。对于基元,将其分配给其他类型会更改数据。