Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Casting hierarchy

 
Willie Toma
Ranch Hand
Posts: 78
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm not sure if my wording is exactly correct, so correct me if it's wrong....
It seems casting is necessary when initializing anything below a selected type on the list:
double
float
long
int
short/char
char/short
byte

Example:
double d = 9;
float f = (float)d; //Cast necessary
Question:
1) Example:

Why is casting necessary between float and long even though float is 32 bits and long is 64 bits? Long is bigger, there should be plenty of room.
2)Example:

I believe that short can hold an negative value, and char can't. So, a char can hold more than a short? and a cast is necessary. Why is a cast necessary both ways if one is bigger than the other?
3)Example:

Why is casting necessary both ways if char is 16 bits, and byte is 8 bits?
4)O'yea, by the way, thanks for you help!!!
 
Jose Botella
Ranch Hand
Posts: 2120
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In JLS 5 all of this is explained.
Any assignment between char and short/byte is regarded as a narrowing conversion, and thus it needs a cast... Except the cases explained in JLS 5.2
 
Willie Toma
Ranch Hand
Posts: 78
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What is JLS? Java L... S...
 
Patrick Hoey
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
JLS,
Java Language Specification.
Get it here:
http://java.sun.com/docs/books/jls/index.html
You can download it in html, or pdf format (about 4.5 megs).
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic