#1
If you're new to Java programming, two of the most important concepts to grasp right from the start are variables and data types. Don’t worry—they’re not as scary as they might sound. Think of variables as labeled boxes that hold different kinds of data, and data types as the kind of content those boxes are allowed to store.
In this beginner-friendly guide, we’ll break down what variables are, the different types of data you can store in them, and how to use them correctly in your Java programs.

What is a Variable in Java?

A variable in Java is like a storage container for data. You give it a name, choose what kind of data it should hold, and then assign a value to it.
Here’s a simple example:
int age = 25;
In this line
  • int is the data type (it means the variable will store an integer).
  • age is the variable name.
  • 25 is the value stored inside the variable.

Variable Declaration and Initialization

You can declare a variable like this:
int score;  // declaration
And assign a value to it later:
score = 100;  // initialization
Or you can do both in one line (which is very common):
int score = 100;

Types of Variables in Java

Java has three types of variables, based on where they are declared and how long they exist:
  1. Local Variables
    • Declared inside methods or blocks.
    • Only accessible within that method or block.
    • Must be initialized before use.
  2. Instance Variables (a.k.a. fields)
    • Declared inside a class but outside methods.
    • Belong to each instance (object) of the class.
    • Have default values if not explicitly initialized.
  3. Static Variables
    • Declared with the static keyword.
    • Belong to the class, not to objects.
    • Shared among all instances.
Example:
public class Car {
    static int numberOfWheels = 4;  // static variable
    String color;                   // instance variable

    public void displayInfo() {
        int speed = 60;             // local variable
        System.out.println(color + " car going at " + speed + " km/h.");
    }
}

Java Data Types Overview

Java is a strongly typed language, which means every variable must have a data type. Data types tell Java what kind of data a variable can hold.

1. Primitive Data Types

Java has eight primitive types:
Type Description Example
int Whole numbers int x = 10;
double Decimal numbers double pi = 3.14;
float Smaller decimal numbers float rate = 5.5f;
char A single character char letter = 'A';
boolean True or false boolean isJavaFun = true;
byte Smallest whole number type byte a = 100;
short Small whole number short b = 10000;
long Large whole numbers long bigNum = 100000L;
Note:
  • float and long values require a suffix: f or L.
  • double is the default for decimals.

2. Non-Primitive (Reference) Data Types

These include:
  • Strings
  • Arrays
  • Objects
  • Interfaces
Example of a String:
String greeting = "Hello, Java!";
Strings are widely used and are not considered primitive—even though they feel like one.

Constants: Final Variables

If you want a variable’s value to never change, use the final keyword:
final double PI = 3.14159;
By convention, constant names are written in uppercase.

Type Casting in Java

Sometimes, you may need to convert one data type into another. This is called type casting.

Implicit Casting (Widening)

Java does this automatically when converting from a smaller type to a larger type.
int a = 100;
double b = a;  // no error

Explicit Casting (Narrowing)

You must do this manually when going from a larger to a smaller type.
double a = 9.8;
int b = (int) a; // b = 9
Be careful: narrowing may lead to data loss.

Tips for Working with Variables

  • Always give meaningful names: userName is better than u1.
  • Java is case-sensitive: Age and age are different.
  • Choose the right data type to save memory and avoid bugs.
  • Use final for values that shouldn't change.

Common Mistakes to Avoid

  • Forgetting to initialize a local variable before using it.
  • Mixing up types: trying to store a String in an int will cause an error.
  • Overflow: assigning a large value to a small data type (like byte b = 200;) will cause issues.
  • Confusing primitive types with reference types (like int vs Integer).

image quote pre code