pow (x,y) in Java

What's the difference between:

Math.pow ( x,y ); // x^y

To:

x^y; // x^y

?

Will I prefer to use x^y with double type numbers? Or shell I have to use always with Math.pow() method?


Solution 1:

^ is the bitwise exclusive OR (XOR) operator in Java (and many other languages). It is not used for exponentiation. For that, you must use Math.pow.

Solution 2:

Additionally for what was said, if you want integer powers of two, then 1 << x (or 1L << x) is a faster way to calculate 2x than Math.pow(2,x) or a multiplication loop, and is guaranteed to give you an int (or long) result.

It only uses the lowest 5 (or 6) bits of x (i.e. x & 31 (or x & 63)), though, shifting between 0 and 31 (or 63) bits.