在java中进行多次类型转换的目的是什么?

时间:2017-04-18 03:12:29

标签: java casting

我今天在java中遇到了一个代码片段,如下所示:

long longValue = 100;
byte b = (byte)(short)(int)longValue;
byte byteValue = 100;
long l = (long)(int)(short)byteValue;
System.out.println(b+l);

多次输入类型的目的是什么,从int到short到byte,从short到int到long?如果我直接从长字节转换为字节,反之亦然,它会有什么不同吗?

即使没有明确的类型转换,上面的代码也没有任何区别!

1 个答案:

答案 0 :(得分:4)

  

多次输入类型的目的是什么,从int到short到byte,从short到int到long?

没有目的。期。

byte b = (byte)(short)(int) longValue;
long l = (long)(int)(short) byteValue;

100%相当于:

byte b = (byte) longValue;
long l = byteValue;

您问题中的代码可能是以下之一:

  • 表明代码的作者不理解Java,
  • 测试......看看>>你<<了解Java,
  • Java编译器或类似代码的单元测试的一部分,或
  • 由某些工具生成的代码,人类不应该阅读,编译器会兴高采烈地进行优化。

有一两种情况下,一系列类型转换实际上是有用的。这是一个:

int ch = ...
System.out.println("char is '" + (char)(byte) ch + "'");

此处,(byte) int缩小为8位有符号值,然后(char) 加宽到16位无符号值。然后+运算符使Character.toString(char)用于将值转换为String。 (如果省略(char),则该值将被格式化为数字,而不是字符......)

(注意:上面的代码存在问题。我用它来说明链接类型转换有时候是一件有用的事情。)