0

像这样进行转换有什么好处吗

int i = 1024;
byte b = (byte)i;

在做这个

int i = 1024;
byte b = *((byte*) &i);

我的意思是,如果你想使用第二种方法,你必须使用不安全的代码,这意味着 JIT 不能按照它的意愿优化它(我认为它在内部使用第二种方法)等等。

有人可以解释我何时以及为什么使用第一种/第二种方法吗?

问候

4

1 回答 1

2

这两个不是等价的。

第一个是简单的语言定义演员表。其结果定义明确:第一个返回 8 个最低有效位。

第二个实际上是重新解释演员。它返回内存中的前 8 位。这在典型的小端系统上恰好是相同的,但在大端系统上却不同。

在极少数情况下,重新解释转换很有用,但这不是其中之一。您应该始终使用普通类型转换,除非您遇到的问题只能通过重新解释类型转换来解决。

于 2012-08-05T09:36:24.363 回答