Java中长整型和整型比较如何发生

Nab*_*ada 1 java

long l = 1234;
int i  = 1234;

if (l == i) {
  System.out.println("equals");
} else {
  System.out.println("not equals");
}
Run Code Online (Sandbox Code Playgroud)

我的问题是将它们比较为int还是long

除非我们指定,否则我认为两者都是int

long l = 1234L;
Run Code Online (Sandbox Code Playgroud)

如果有人有更深的理解,请解释。

Era*_*ran 5

由于的操作数中的一个==操作员longl)这2个比较longS转换后ilong

相关JLS语录:

15.21.1。数值相等运算符==和!=

如果相等运算符的操作数都是数字类型的,或者一个是数字类型的,而另一个是可转换的(第5.1.8节)为数字类型,则对操作数(第5.6.2节)执行二进制数字提升

如果操作数的提升类型为int或long,则执行整数相等性测试。

5.6.2。二进制数值促销

否则,如果一个操作数的类型为long,则另一个将转换为long

  • @TJCrowder有时候,回答起来比找到骗子更容易:/ (2认同)