I never saw the java xor operator used with boolean operands in real code, but only with numeric operands.
Do you really use
if (a ^ b) instead of
if (a != b) ? Do you have a real life use case?
a ^ b is a mischievous way to compare
a != b and we don’t increase the complexity for such comparison.
|| operators create branches in the control flow of the program that increase the complexity, e.g.:
if(a() && b()) // when a() return false, b() is not called
if(a() || b()) // when a() return true, b() is not called
^ operators that always require evaluation of their operands:
if(a() != b()) // a() and b() are always called
if(a() ^ b()) // a() and b() are always called