Skip to main content
Documents
Java keywordsIntroduction To JavaJava File HandlingJava Language BasicsJava ArraysJava Object-Oriented Programming

Java Type Casting

Type casting in Java is the process of converting one data type into another. It is essential when you want to perform operations between different data types or when you need to store a value of one type into a variable of another type. Java supports two types of casting: implicit (automatic) casting and explicit (manual) casting.

Implicit Casting (Widening Conversion)

Implicit casting occurs automatically when a smaller data type is converted into a larger data type. This type of casting is safe and does not result in data loss.

Syntax

largerType variableName = smallerTypeValue;

Example

public class ImplicitCastingExample {
    public static void main(String[] args) {
        int intValue = 100;
        double doubleValue = intValue; // Implicit casting from int to double
        System.out.println("Double value: " + doubleValue);
    }
}

In this example, the int value intValue is implicitly cast to a double type. The conversion is automatic because double is larger than int.

Explicit Casting (Narrowing Conversion)

Explicit casting is required when converting a larger data type into a smaller data type. This type of casting can result in data loss, so it must be done manually.

Syntax

smallerType variableName = (smallerType) largerTypeValue;

Example

public class ExplicitCastingExample {
    public static void main(String[] args) {
        double doubleValue = 9.78;
        int intValue = (int) doubleValue; // Explicit casting from double to int
        System.out.println("Integer value: " + intValue);
    }
}

In this example, the double value doubleValue is explicitly cast to an int type. The conversion results in truncation of the decimal part.

Casting Between Object References

In Java, you can also cast between object references. This is often used when dealing with inheritance and interfaces.

Example

class Animal {
    void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks");
    }
}

public class ReferenceCastingExample {
    public static void main(String[] args) {
        Animal animal = new Dog(); // Upcasting
        Dog dog = (Dog) animal;    // Downcasting
        dog.bark();
    }
}

Here, an Animal reference is upcast to a Dog object. Later, it is explicitly downcast back to a Dog to access the bark method.

Tips and Best Practices

  • Avoid Unnecessary Casting: Use implicit casting wherever possible to minimize the risk of errors.
  • Check for Compatibility: Ensure that the types are compatible when performing explicit casting to prevent ClassCastException.
  • Use instanceof Operator: Before downcasting, use the instanceof operator to check if the object is an instance of the target class.
    if (animal instanceof Dog) {
        Dog dog = (Dog) animal;
    }
    
  • Be Aware of Data Loss: When performing explicit casting, be mindful of potential data loss, particularly with narrowing conversions.
  • Understand Hierarchies: When dealing with object references, understand the class hierarchy to perform safe casting.

Learn Java Essentials

Build your Java skills from the ground up and master programming concepts.
Start Learning Java for Free