java - Java 类型转换:转换实际上在哪里?
问题描述
我问自己这个:
如果 - 在某些情况下 - 类型根本没有改变,为什么 Java 将其称为类型转换?
让我们看一个简单的例子:
字符串 s = "a";
对象 o = s;
这很好用,因为它是一个扩大的参考转换。但是,在这种情况下,什么都不会被转换。在编译第二个赋值语句时,编译器发现右边的表达式与左边的表达式不同。但这并不意味着编译错误,因为 Object 是 String 的超类型。因此,存储在 s 中的引用被允许存储在 o 中。所以,实际上,这里没有转换任何类型。
或者这是错的?
解决方案
值得记住的是,这是对s
a 的引用String
,而不是对 String 的引用。
当您将引用分配给引用时,Object
引用的类型会发生变化,但引用和引用的对象保持不变。
由于没有数据被更改,因此没有实际操作来执行此操作。这只会改变编译器检查其值的方式。注意:真正的 CPU 在运行时没有任何检查要执行。对于 CPU,它只是对象的地址。
cf 对于原语,分配给不同的类型会改变数据。
推荐阅读
- python - 无法从下拉菜单中单击的元素
- ionic-framework - Ionic 5 目录树动态
- cross-compiling - 在内核编译期间传递 ARCH 选项
- python - BeautifulSoup 文本搜索,精确与类似,来自统计信息列表
- javascript - ReferenceError:在初始化之前无法访问“嵌入”(嗨)
- javascript - 使用 Excel 中的数据填写 Web 表单并记录结果
- .net - 如何在 .NET 应用程序中使用 Moq 创建两个 unitOfWorkMock?
- python - Discord.py 按钮交互在用户单击时失败
- python - Flask App 未在 Heroku 中创建 Postgres 数据库/表(错误:AttributeError:'NoneType' 对象没有属性'drivername')
- eclipse - 如何将 Eclipse 项目从一个 Github 存储库移动到另一个?