Primitive Data Types:
Examples:
long
,int
,char
,boolean
,float
.Primitive data types are basic types provided by a programming language.
Stored in stack memory.
Directly contain their values.
When assigned to another variable, a new memory location is created.
Uninitialized primitive variables produce a compiler error.
Non-Primitive Data Types:
Anything not a primitive is a non-primitive data type.
Non-primitive data types are actually classes.
Classes can be user-defined or predefined (e.g.,
System
in Java).Example: User-defined class
Point
with membersx
andy
.Created using the
new
operator.Stored in heap memory.
Non-primitive variables are references to memory locations where objects are stored.
Default initialization values:
Integers:
0
Boolean:
false
Floating point:
0.0
References:
null
Uninitialized members of non-primitive types get default values, while uninitialized primitive types cause compiler errors.
Access members using the dot operator (e.g.,
p.x
).
Differences Between Primitive and Non-Primitive Data Types:
Memory Allocation:
Primitives: Stack memory.
Non-Primitives: Heap memory.
References:
Primitives: Directly contain their values.
Non-Primitives: Contain references to objects in heap memory.
Assignment:
Primitives: Creating a new variable with a primitive type and assigning it a value from another variable creates a new memory location.
Non-Primitives: Creating a new variable with a non-primitive type and assigning it a value from another variable makes both variables reference the same memory location.
Initialization:
Primitives: Must be explicitly initialized; otherwise, a compiler error occurs.
Non-Primitives: Members get default values if not explicitly initialized.
Example:
Primitive Example:
int x1 = 10; int x2 = x1; x2 = 20; // Output: x1 = 10, x2 = 20
Non-Primitive Example:
Point p1 = new Point(); p1.x = 10; p1.y = 20; Point p2 = p1; p2.x = 30; // Output: p1.x = 30, p2.x = 30
Differences Between Primitive and Non-Primitive Data Types [ Table Format ]
Feature | Primitive Data Types | Non-Primitive Data Types |
Examples | long , int , char , boolean , float | User-defined classes, predefined classes |
Memory Allocation | Stack memory | Heap memory |
Variable Type | Normal variables (contain actual values) | Reference variables (point to memory locations) |
Assignment | Creates a new memory location | References the same memory location |
Initialization | Must be explicitly initialized | Members get default values if uninitialized |
Access | Directly | Using dot operator (e.g., p.x ) |
Default Values | Compiler error if uninitialized | Integers: 0 , Boolean: false , Floating point: 0.0 , References: null |
Interview Questions:
What are primitive data types in Java?
Examples:
long
,int
,char
,boolean
,float
.Basic types provided by the language, stored in stack memory.
What are non-primitive data types?
Examples: User-defined classes, predefined classes like
System
.Stored in heap memory, created using
new
operator.
How do primitive and non-primitive data types differ in terms of memory allocation?
Primitives: Stack memory.
Non-Primitives: Heap memory.
What is the difference between a reference and a normal variable?
Reference: Points to a memory location (used by non-primitives).
Normal Variable: Directly contains its value (used by primitives).
What happens when you assign one non-primitive variable to another?
- Both variables reference the same memory location.
How are uninitialized members of non-primitive types handled?
- They get default values (e.g.,
0
for integers,false
for boolean).
- They get default values (e.g.,
What is the result of trying to access an uninitialized primitive variable?
- Compiler error.
Explain the use of the
new
operator in creating non-primitive variables.- Allocates memory on the heap for the non-primitive type and returns a reference.
Can you give an example where changing a non-primitive variable's member affects another variable?
- Yes, if
p2
is assigned top1
, changingp2.x
also changesp1.x
because both refer to the same memory location.
- Yes, if
Why do non-primitive types have default values for their members, while primitive types do not?
- Non-primitives are reference types and can point to null or default initialized values, whereas primitives must be explicitly initialized to prevent undefined behavior.