A cast is a conversion of data type on a variable. Casts can occur when you explicitly request them as in:
Frame f = new Frame;
Object o = ((Object)Frame);
or implicitly by the Java itself. You should be aware of implicit (aka automatic) casts since they may take place without you actually wanting them. Here are various implicit (automatic) casts that can take place in Java:
1. Automatic Assignment Conversion that converts the type of an expression to the type of a variable (e.g. short s = 44). This type of conversions can take place when converting from a type to that same type a process referred to as "identity conversion", when performing a widening conversion (e.g. assigning int to long), or when performing narrowing conversion (e.g. assigning int to byte). This form of conversion occurs only in assignments that preclude exceptions by definition.
2. Automatic Numeric Promotion that homogenates to allow an operation (e.g. 2.0f + 5.5 will cause 2.0f to be promoted to a double)
3. Automatic Method Invocation Conversion that occurs when you pass arguments during a method invocation (e.g. calling aMethod(66) on a method defined as a Method(long val)). Except for disallowing implicit narrowing of integer constants, this form of conversion's behavior is identical to that of Automatic Assignment Conversion. This form of conversion occurs only when the argument types passed to the method can be automatically converted to those specified in the method signature in a manner which precludes exceptions by definition.
4. Automatic String Conversion that allows any type to be converted to type String. This occurs when the "+" String concatenating operator is used (ex. String aString = "answer: " + answer, where answer can be of any type).