邏輯與(&)和短路與(&&)在運算上對條件的結果判斷不會產生影響,但會對條件判斷的運算有影響.
關鍵在於,邏輯與(&)在運算時會連續運算所有需要判斷的命令.但短路與當遇到false時就會停止運算
比如:
關鍵在於,邏輯與(&)在運算時會連續運算所有需要判斷的命令.但短路與當遇到false時就會停止運算
比如:
1 public class Test{ 2 public static void main (String args[]){ 3 int i=5; 4 boolean e=i>4&&i++>7; 5 System.out.println(e); 6 System.out.println(i); 7 } 8 }
以上的程序會輸出:
false
6
因為&&前面的(i>4)的值是true,所以需要繼續運算后面的i++.
但若像下面這樣:
6
因為&&前面的(i>4)的值是true,所以需要繼續運算后面的i++.
但若像下面這樣:
1 public class Test{ 2 public static void main (String args[]){ 3 int i=5; 4 boolean e=i>6&&i++>7; 5 System.out.println(e); 6 System.out.println(i); 7 } 8 }
就會輸出:
false
5
因為&&前面的i>6的值是false.所以判斷到這里就會中止運算,即i++不會被執行.被"短路"了.叫做短路與 .
邏輯或(||)同以上同理 .
5
因為&&前面的i>6的值是false.所以判斷到這里就會中止運算,即i++不會被執行.被"短路"了.叫做短路與 .
邏輯或(||)同以上同理 .