用 || 运算会短路,当前一个表达式成立后,b就用true了,后一个methodB (8)就不做。
用|的话,要算到底的。所以是4。

解决方案 »

  1.   

    j是全局变量,只要methodA(int i) 中i的值小于10,结果都会是4。
      

  2.   

    这就是非简洁与'|'和间接与'||'的区别了。
    如果用'|'连接两个逻辑表达式,不管前面这个逻辑表达式的结果如何,第二个逻辑表达式也都还要运算。
    而如果用'||'连接两个逻辑表达式时,若前面这个逻辑表达式的结果为true,此时其实已经决定了整个表达式的结果,这时因此它是“简洁的”,所以第二个逻辑表达式就不再运算了。
    其实用"|"和"||"的boolean运算返回结果肯定是相同的,但"||"会有可能更快,有可能会经历更少的运算。
    因此看methodA(0):
    第一行因为是"|", (0<10)这个表达式运算了,methodB(4)也运算了,因此j变为4。
    第二行因为(0<10)返回的true所以methodB(8)就不再运算,j也就不会变化了。 
    `