在Java中比较int和long可以吗
在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
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
是错误的选择,因为溢出不应该发生。