短路和一元操作员的工作

das*_*dsa 2 java operator-precedence

请看下面的代码:

int i=5;
boolean b = i<5 && ++i<5;//line 2
System.out.println(i);//line 3, prints 5
Run Code Online (Sandbox Code Playgroud)

在第2行中,根据我的理解:由于在所有运算符中,++i应该首先评估具有最高优先级的++ .但line 3实际上是打印i=5(而不是6).含义,&&在++运算符之前已经过评估.这怎么可能?

编辑:从答案中我看到"在Java中,所有表达式都是从左到右进行评估." 但什么时候实际优先顺序发挥作用.在以下代码中:

int a=1,b=1,c=1;
boolean b = a==b&&b==c;//Line2
Run Code Online (Sandbox Code Playgroud)

在第2行中,代码不会从左到右运行.首先评估a == b然后b == c然后是&&运算符.你能解释一下吗?

Bat*_*eba 7

这不是表达式的处理方式.

在Java中,所有表达式都是从左到右进行计算.运算符优先考虑的评价时,只有发挥作用的论点&&.

因此i < 5在计算之前++i < 5就算了.

在这种情况下,++i < 5 进行评估,因为i < 5false.所以i留在5.