Re: alias
NickName wrote:
Daniel Pitts wrote:
NickName wrote:
OP [...]
import static java.lang.System.*;
public class OddsAndEvens {
public static final int MAX_COUNT = 5;
public static boolean isEven(int number) {
return (number & 1) == 0;
}
public static void main(String[] args) {
for (int i = 0; i < MAX_COUNT; ++i) {
out.println(i + " is an " + (isEven(i) ? "even" : "odd") + "
number");
}
}
}
Probably the shortest way to write this and still have it readable.
Very nice and thanks for introducing the System package here. More
questions,
For the LINE of
public static final int MAX_COUNT = 5;
why not simply int MAX_COUNT = 5;
? // since it's it's already at the top level of the OddsAndEvens
class.
int MAX_COUNT = 5; woudl create a new integer for every object create
in OddsAndEvens. In this particular case, that doesn't matter much,
but if you have a constant value that is the same accross 10000
objects, it can start to add up.
the "static" keyword tells the compiler that the memory and value is
associated with the class, not individual instances of the class. The
"final" keyword tells the compiler to not let anyone accidently change
the value of this constant. It also allows the compiler to optimize.
Please elaborate on the "(number & 1) == 0", though the & symbol is
supposed to mean something like Evaluation AND (binary). TIA.
In binary, if a number is a multiple of two, then its lowest
signifigant bit is 0, otherwise the bit is one.
We can use that knowledge to help us determine the "evenness" of a
number. Since an even number is a number which contains two as a
factor, we can test the lowest bit to tell us where a number is odd or
even.
1 is the bitmask for the lowest bit. n & 1 will return the value of
the lowest bit.
for example:
n | BIN |n&1|
0 | 0000 | 0 | even
1 | 0001 | 1 | odd
2 | 0010 | 0 | even
3 | 0011 | 1 | odd
4 | 0100 | 0 | even
Hope this helps.
- Daniel.