将整数转换为int会返回“ -1”吗?

问题描述

| 在Java中将long转换为int是否安全? 由于某种原因,以下代码将anIntvar设为\'-1 \'。并且我检查了\'aLongVar \'不是-1。
public static final long CONST = 1000 * 62;

long aLongVar
int anIntvar =  (int)(aLongVar/ CONST);
    

解决方法

        不,它不安全。不要做。因为,
Long / long
具有64位,并且可以容纳的数据比
Integer / int
仅具有32位的要多。进行转换将导致信息丢失。 如果您完全想要这样做,请这样做 使用
.intValue()
Long
值转换为
int
值。     ,        如果安全的话,则不需要显式转换。     ,        
long
是64位,an5ѭ是32位,所以不,这是不安全的。     ,        尝试
int anIntVar = Math.rint(aLongVar);
    ,        如果long中的值适合int,则可以将long转换为int并获得有意义的结果。如果没有,您将被截断高位。在您的示例中,您没有在进行除法运算之前显示分子中的值,但是-1给出正确的输入当然不是不可能的值。 合法吗是。安全吗?不,除非您进行范围检查或确信您对输入足够了解,否则不会。