Hi Nanda,
What we are talking about is not casting, but logical representations between very different types (i.e. String and int). You talk about casting when conversion between types has a "semantic" sense (casting a float to an int has sense, but casting a String to an int has no sense).
We often talk about "primitive casting". Primitives in the Java language are : char, byte, short, int, long, float, double, boolean, and void.
You might have heard that everything in Java is object, indeed classes instance. Objects are always created in a memory area which is not optimal. But the Java language has particular elements which are called primitives. Primitives look like objects, but are not objects at all. They are created and managed in a different way(for example int primitive is useful for loop counters). However, primitives are wrapped into objects specially made for that, such objects are called wrappers.
Integer, Float classes, for example are wrappers for primitives int and float respectively. They just provide helpful features to manage their corresponding primitives.
I hope this could help you. --
Globos