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个随机字符。
谢谢!
答案 0 :(得分:1)
如何回答这个问题还不太清楚...与任何类型转换一样,当您拥有一种类型的值(在这种情况下为long)但您需要另一种类型的值(在这种情况下)会使用它大小写)。
是的,由于强制转换操作的限制(有时这是基于数据类型的限制),有时它会给您不想要的结果。但是,从其中选择一个,然后说“那么进行此操作有什么意义”,就像说“如果我有两个整数,AppView
和a
,每个价值2,000,000,000,则-他们没有得到想要的结果...那么添加整数有什么意义呢?“
答案 1 :(得分:0)
将long
强制转换为int
的主要用途是获取long
值,该值在-2147483648..2147483647范围内,并将该数字与期望的代码一起使用该范围内的int
值。选择具有值的行为超出了该范围,是因为:
Java的设计者希望在可行时充分指定其行为。
采用最低的32位并且忽略最高的32位比任何其他 consistent 操作过程都快,后者可以合理地在-2147483648..2147483647范围内工作。 p>
在许多情况下,如果不需要一致性,则其他措施有时可能会更高效地生成代码,或者如果不需要速度,则可能会更有用。但是,所采用的方法在速度,有用性和一致性之间提供了最佳折衷。