Non-primitive data types in Java are used to store complex data and references. They do not store actual values directly, but instead store memory addresses.
Non-primitive types are declared using class names or predefined reference types. They always have a default value of null.
// Example of String (non-primitive type)
String name = "Java Programming";
System.out.println(name);
// Example of Array (non-primitive type)
int[] numbers = {10, 20, 30};
System.out.println(numbers[0]);
The String example prints the text stored in the string object. The array example prints the first element stored in the array.