将long转换为整数有什么意义?

时间:2019-01-17 00:28:01

标签: java

public class ConstantsAndCasting{
     public static void main (String args[]){
          long hugeNum = 23456013477456L;
          int smallNum = (int)hugeNum;
          System.out.println(hugeNum);
          System.out.println(smallNum); 
     }
}

上面列出的代码的输出为:

23456013477456 
1197074000

当将long转换为整数值时,java似乎从右边的左行开始保留32位。结果是一个比原始long值更接近0的值。从机器的角度来看,这完全有意义,但实际用途是什么?似乎最好使用随机数生成器来产生10个随机字符。

谢谢!

2 个答案:

答案 0 :(得分:1)

如何回答这个问题还不太清楚...与任何类型转换一样,当您拥有一种类型的值(在这种情况下为long)但您需要另一种类型的值(在这种情况下)会使用它大小写)。

是的,由于强制转换操作的限制(有时这是基于数据类型的限制),有时它会给您不想要的结果。但是,从其中选择一个,然后说“那么进行此操作有什么意义”,就像说“如果我有两个整数,AppViewa,每个价值2,000,000,000,则-他们没有得到想要的结果...那么添加整数有什么意义呢?“

答案 1 :(得分:0)

long强制转换为int的主要用途是获取long值,该值在-2147483648..2147483647范围内,并将该数字与期望的代码一起使用该范围内的int值。选择具有值的行为超出了该范围,是因为:

  1. Java的设计者希望在可行时充分指定其行为。

  2. 采用最低的32位并且忽略最高的32位比任何其他 consistent 操作过程都快,后者可以合理地在-2147483648..2147483647范围内工作。 p>

在许多情况下,如果不需要一致性,则其他措施有时可能会更高效地生成代码,或者如果不需要速度,则可能会更有用。但是,所采用的方法在速度,有用性和一致性之间提供了最佳折衷。