像这样进行转换有什么好处
int i = 1024;
byte b = (byte)i;
执行此操作
int i = 1024;
byte b = *((byte*) &i);
我的意思是,如果你想使用第二种方法,你必须使用不安全的代码,这意味着JIT无法按照自己的意愿对其进行优化(我认为它是在内部以第二种方式进行)等等。
有人可以解释我何时以及为何使用第一种/第二种方法?
问候
答案 0 :(得分:2)
这两者并不相同。
第一种是简单的语言定义演员。其结果定义明确:第一个返回8个最低有效位。
第二个实际上是一个重新解释。它返回内存中的前8位。这在典型的小端系统上恰好相同,但在大端系统上却有所不同。
有一些罕见的情况,重新解释强制转换是有用的,但这不是其中之一。除非遇到只能通过重新解释转换才能解决的问题,否则应始终使用普通强制转换。