java中逻辑与&& 的短路原则。

public class Test
{
    public static void main(String[] args)
    {
        int x = 0;
        int y = 0;
        int k = 0;
        for (int z = 0; z < 5; z++) {
            if ((++x > 2) && (++y > 2) && (k++ > 2))
            {
                x++;
                ++y;
                k++;
            }
        }
        System.out.println(x + ”” +y + ”” +k);
    }
}

看到如上一道java题,掉在 && 的坑里了,原来 && 有个短路原则,一旦前面判断为 false ,后面的判断便不执行了。
所以:

  • z=0 : x=1, y=0, k=0;
  • z=1 : x=2, y=0 ,k=0
  • z=2: x=3, y=1, k=0
  • z=3: x=4, y=2, k=0
  • z=4: x=5, y=3, k=1
    循环完了,仍是false .输出结果为:5 3 1

你可能感兴趣的:(java)