我今天在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?如果我直接从长字节转换为字节,反之亦然,它会有什么不同吗?
即使没有明确的类型转换,上面的代码也没有任何区别!
答案 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;
您问题中的代码可能是以下之一:
有一两种情况下,一系列类型转换实际上是有用的。这是一个:
int ch = ...
System.out.println("char is '" + (char)(byte) ch + "'");
此处,(byte)
将int
缩小为8位有符号值,然后(char)
加宽到16位无符号值。然后+
运算符使Character.toString(char)
用于将值转换为String。 (如果省略(char)
,则该值将被格式化为数字,而不是字符......)
(注意:上面的代码存在问题。我用它来说明链接类型转换有时候是一件有用的事情。)