Data Types

Primitive and reference types in Java

Interview Relevant: Difference between primitive and wrapper classes
8 min read

Understanding Data Types

Data types specify the type of data a variable can hold. Java is a strongly typed language, meaning every variable must be declared with a type before use.

Primitive Data Types

Primitive types are the basic building blocks. They are not objects and store single values in memory.

Type Size Range Example
byte 1 byte -128 to 127 byte age = 25;
short 2 bytes -32,768 to 32,767 short year = 2025;
int 4 bytes -2³¹ to 2³¹-1 int count = 1000;
long 8 bytes -2⁶³ to 2⁶³-1 long id = 123456789L;
float 4 bytes ±3.4×10³⁸ float price = 19.99f;
double 8 bytes ±1.7×10³⁰⁸ double pi = 3.14159;
char 2 bytes 0 to 65,535 (Unicode) char initial = 'J';
boolean 1 bit true or false boolean isActive = true;

Reference Data Types

Reference types don't store the actual data but store a reference (address) to the data in memory. They include classes, interfaces, arrays, and strings.

🔑 Key Difference: Primitive types are passed by value, while reference types are passed by reference.

Code Examples

Declaration and initialization of all primitive data types

java
1// Primitive data types
2byte age = 25;
3short temperature = -10;
4int population = 7800000000;
5long distance = 384400000L;
6float price = 29.99f;
7double pi = 3.14159265;
8char grade = 'A';
9boolean isJavaFun = true;

Examples of reference data types - strings, arrays, collections, and objects

java
1// Reference data types
2String name = "John Doe";           // String object
3int[] scores = {95, 87, 92};         // Array of integers
4ArrayList<String> cities = new ArrayList<>();  // Collection
5Student student = new Student();     // Custom class object

Understanding the difference between primitive and reference type assignments

java
1// Demonstrating primitive vs reference
2public class DataTypeDemo {
3    public static void main(String[] args) {
4        // Primitive - copy by value
5        int a = 10;
6        int b = a;  // b gets the value 10
7        b = 20;     // changing b doesn't affect a
8        System.out.println(a); // Output: 10
9        
10        // Reference - copy by reference
11        int[] arr1 = {1, 2, 3};
12        int[] arr2 = arr1;     // arr2 points to same array
13        arr2[0] = 99;          // changing arr2 affects arr1
14        System.out.println(arr1[0]); // Output: 99
15    }
16}

Use Cases

  • Choosing appropriate data types for variables to save memory
  • Avoiding integer overflow by using long instead of int
  • Working with floating-point calculations (double for precision)
  • Processing character data and Unicode
  • Creating boolean conditions for control flow

Common Mistakes to Avoid

  • Using int for very large numbers instead of long
  • Assuming float has same precision as double
  • Forgetting the L suffix for long literals
  • Forgetting the f suffix for float literals
  • Confusing == operator with .equals() method for reference types
  • Not understanding that variables store values, not the objects themselves for primitives

AI Tutor

Ask about the topic

Sign in Required

Please sign in to use the AI tutor

Sign In