Hello once again ranchers ! I've been gone for a while, but I'm glad to be back certainly.
You know I have read that any literal assignment when talking about numbers is implicitly an int. Does the compiler have to do a (implicit) Cast of some sort from int to another type in a case like the one below?:
Is the number on the right of the equals an int that needs to be Cast & then boxed ?
That'd be it for today, Thanks in advance and good luck! Sincerely, Jose
You are obviously using J5 or J6, and you are using autoboxing. In an initial assignment of a byte you can put a number to the right of the assigns (=) sign, and the compiler will presume it is supposed to be a byte. Provided it is in the range -0x80 to 0x7f (-128 to +127), without needing to write a cast.
Integer literals are indeed ints, but there is a special case for byte.
If you assign a value to a byte (or Byte, via autoboxing), and the value that you are assigning is a compile-time constant, then the compiler can check at compile-time if the value is in the range for the byte data type (-128 to +127), and then you can do this without casting.
If the value is not a compile-time constant, then you must use a cast. For example:
[ December 15, 2007: Message edited by: Jesper Young ]
Whoa!, That's interesting. Really interesting. For a minute I thought I asked a dumb-question; But it's good to see that there actually is more than meets the eye when talking about assignments. I'm satisfied with the explanation guys, I could never have figured it out on my own,