One of the reasons why you might want to use the operator without a short circuit is that you are somehow dependent on the side effects of the functions. For instance.
boolean isBig(String text) { System.out.println(text); return text.length() > 10; } ... if( isBig(string1) || isBig(string2) ){ ... }
If it doesn't matter to you whether println is running, you should use short circuit operations as described above. However, if you want both lines to be printed always (thus, depending on side effects), you need to use the operator without a short circuit.
Practically speaking, you almost always want to use short circuit operators. Relying on side effects in expressions is usually a bad programming practice.
One exception is code with a very low level or high sensitivity. Short-circuit statements may be slightly slower because they cause branching in program execution. Also, the use of bitwise operators allows you to perform 32 or 64 parallel logical operations as a whole, which is very fast.
source share