在Java中比较int和long可以吗

在Java中比较int和long可以吗,java,long-integer,Java,Long Integer,在Java中比较int和long可以吗 long l = 800L int i = 4 if (i < l) { // i is less than l } 长l=800L int i=4 如果(ib)似乎隐式转换发生在a+1存储为int@WeishiZeng:是的,绝对是。a+1中的两个操作数都是int-因此在int算术中进行加法,然后转换为long,然后进行比较。为什么不建议这样做?相反,在比较之前将long转换为整数并不更好,这可能会导致溢出,从而导致错误的结果。@Intent

在Java中比较int和long可以吗

long l = 800L
int i = 4

if (i < l) {
 // i is less than l
}
长l=800L
int i=4
如果(i
是的,很好。
int
将隐式转换为
long
,这样做始终不会丢失任何信息。

您可以直接比较long和int,但不建议这样做。
比较之前最好先将long转换为整数,因为long值可以高于int限制

long l = Integer.MAX_VALUE;       //2147483647
int i = Integer.MAX_VALUE;        //2147483647
System.out.println(i == l);       // true
 l++;                             //2147483648
 i++;                             //-2147483648
System.out.println(i == l);       // false
System.out.println(i == (int)l);  // true

当你尝试它时发生了什么?只是添加一个遇到的场景<代码>整数a=整数最大值;长b=a以下给出了false
print(a+1>b)
似乎隐式转换发生在
a+1
存储为
int
@WeishiZeng:是的,绝对是。
a+1
中的两个操作数都是
int
-因此在
int
算术中进行加法,然后转换为
long
,然后进行比较。为什么不建议这样做?相反,在比较之前将long转换为整数并不更好,这可能会导致溢出,从而导致错误的结果。@IntentialyLeftBlank:不建议这样做,因为两者的范围不同,即使我们在两个变量中存储相同的值,输出也会不同。不,在这种情况下不需要这样做,在这种情况下甚至是不正确的。当比较int和long时,int会自动转换为long,并且工作正常。将long转换为int可能导致错误的结果,因此是错误的做法。您的示例甚至指出了这一点,因为当然-2147483648不等于2147483648。您的示例唯一指出的是,对于
i
选择
int
是错误的选择,因为溢出不应该发生。