Java Programming Basics

Last Updated : 11 May, 2026

Java is a high-level, class-based, and object-oriented programming language widely used for developing web, desktop, and enterprise applications. It follows the “Write Once, Run Anywhere” (WORA) principle, allowing Java programs to run on any platform with a Java Virtual Machine (JVM).

  • Platform-independent language supported by the JVM.
  • Provides object-oriented features such as inheritance, polymorphism, and encapsulation.
  • Known for its security, portability, and robust memory management.

Java Development Environment

The Java Development Environment is required to compile and run Java programs on a system. It involves installing the JDK and configuring environment variables like PATH and JAVA_HOME so the system can access Java tools properly. environment variables (such as PATH and JAVA_HOME).

The development environment of Java consists of three components mainly:

  • JVM (Java Virtual Machine): JVM is the engine that executes Java programs. It converts Java bytecode into machine code that the operating system can understand.
  • JRE (Java Runtime Environment): JRE provides the environment required to run Java applications. It includes JVM and the necessary libraries and supporting files.
  • JDK (Java Development Kit): JDK is used for developing Java applications. It includes JRE along with development tools such as the Java compiler and debugger.

Java Basic Syntax

Before writing complex programs, it is important to understand the basic syntax of Java. The syntax defines the rules and structure of how Java code is written and executed. Every Java program is built using classes, methods, and statements.

Example:

Java
public class HelloWorld {
    public static void main(String[] args)
    {
        System.out.println("Hello, World");
    }
}

Output
Hello, World

Explanation:

  • public class HelloWorld: Defines a class named HelloWorld.
  • public static void main(String[] args): The entry point of the program; execution starts here.
  • System.out.println("Hello, World"): Prints the text "Hello, World" followed by a new line.

To learn Java syntax in depth and understand how this Hello World program runs, you may refer to this article: Java Hello World Program

Comments in Java

Comments in Java are notes written inside the code that are ignored by the compiler. They are used to improve code readability, explain logic, and make programs easier to maintain.

Types of Comments in Java

  • Single-line Comment (//): Used for writing a comment in a single line.
  • Multi-line Comment (/* */): Used for writing comments across multiple lines.
  • Documentation Comment (/** */): Used to generate official Java documentation using Javadoc.

Example:

Java
public class CommentsExample {
    public static void main(String[] args) {
        // This is a single-line comment
        System.out.println("Hello, World"); // Comment at end of line

        /*
         * This is a multi-line comment
         * It can span across multiple lines
         */
        int x = 10;  // Variable declaration

        /**
         * This is a documentation comment (Javadoc)
         * It is used to generate documentation for methods, classes, etc.
         */
        System.out.println("Value of x: " + x);
    }
}

To know more about comments and it's types, you may refer to this article: Java Comments

Data Types in Java

In Java, data types specify the type of values a variable can hold. They define the size, range and nature of data stored in memory. Java has two main categories of data types:

  • Primitive: byte, short, int, long, float, double, char, boolean
  • Non-Primitive: String, Arrays, Classes, Interfaces, Objects
Java
public class DataTypesDemo {
    public static void main(String[] args) {

        // -------- Primitive Data Types --------
        byte b = 100;              // 1 byte
        short s = 30000;           // 2 bytes
        int i = 100000;            // 4 bytes
        long l = 10000000000L;     // 8 bytes

        float f = 3.14f;           // 4 bytes
        double d = 3.14159265359;  // 8 bytes

        char c = 'A';              // 2 bytes (Unicode character)
        boolean flag = true;       // 1 bit

        // -------- Non-Primitive Data Types --------
        String str = "Hello, Java"; // String (class in Java)
        int[] arr = {1, 2, 3, 4, 5}; // Array
        Integer wrapperInt = Integer.valueOf(50); // Wrapper class example
        StringBuilder sb = new StringBuilder("Java"); // Class object

        // -------- Output --------
        System.out.println("byte: " + b);
        System.out.println("short: " + s);
        System.out.println("int: " + i);
        System.out.println("long: " + l);
        System.out.println("float: " + f);
        System.out.println("double: " + d);
        System.out.println("char: " + c);
        System.out.println("boolean: " + flag);

        System.out.println("String: " + str);
        System.out.print("Array: ");
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();

        System.out.println("Wrapper Integer: " + wrapperInt);
        System.out.println("StringBuilder: " + sb);
    }
}

Output
byte: 100
short: 30000
int: 100000
long: 10000000000
float: 3.14
double: 3.14159265359
char: A
boolean: true
String: Hello, Java
Array: 1 2 3 4 5 
Wrapper Integer: 50
StringBuilder: Java

To know Data Types and it's categories in more detail, you may refer to this article: Java Data Types

Variables in Java

Variables are containers to store data in memory. Each variable has a name, type and value. It is the basic unit of storage in a program. Java has 4 types of variables.

  • Local Variables: Declared inside a method, constructor, or block. Accessible only within that block.
  • Instance Variables: Declared inside a class but outside any method. Each object of the class has its own copy.
  • Static Variables: Declared with the static keyword inside a class. Shared by all objects of the class.
  • Final Variables: Declared with final keyword. Value cannot be changed once assigned.
Java
public class VariablesDemo {

    // Instance variable (belongs to each object)
    int instanceVar = 10;

    // Static variable (shared across all objects of the
    // class)
    static String staticVar = "I am static";

    public void showVariables()
    {
        // Local variable (declared inside a method)
        int localVar = 5;

        System.out.println("Instance Variable: "
                           + instanceVar);
        System.out.println("Static Variable: " + staticVar);
        System.out.println("Local Variable: " + localVar);
    }

    public static void main(String[] args)
    {
        // Creating object
        VariablesDemo obj1 = new VariablesDemo();
        obj1.showVariables();

        // Accessing static variable directly using class
        // name
        System.out.println(
            "Accessing Static Variable via class: "
            + VariablesDemo.staticVar);
    }
}

Output
Instance Variable: 10
Static Variable: I am static
Local Variable: 5
Accessing Static Variable via class: I am static

Explanation: This program demonstrates different types of variables in Java: instance, static, and local variables. It shows how instance variables belong to objects, static variables are shared across the class, and local variables are declared inside methods and accessible only within that method

Keywords in Java

Keywords are reserved words in Java that have a predefined meaning. They cannot be used as variable names, class names or identifiers.

Examples: new, package, private, protected, public, return, short, static, etc.

To know all keywords in Java, you may refer to this article: Java Keywords

Operators in Java

Operators are symbols that perform specific operations on one or more operands (variables or values). They are used to perform calculations, comparisons, logical operations and manipulate data.

They are basically of 7 types:

  • Arithmetic Operators (+, -, *, /, %) –> Used to perform mathematical calculations on numeric values.
  • Relational Operators (==, !=, >, <, >=, <=) –> Used to compare two values and return a boolean result.
  • Logical Operators (&&, ||, !) –> Used to combine or reverse boolean conditions.
  • Assignment Operators (=, +=, -=, *=, /=, %=) –> Used to assign and update variable values.
  • Unary Operators (+, -, ++, --, !) –> Used to perform operations on a single operand.
  • Ternary Operator (condition ? value_if_true : value_if_false) –> Used as a shorthand for the if-else statement.
  • Bitwise Operators (&, |, ^, ~, <<, >>, >>>) –> Used to perform operations on binary bits of integer values.
Java
public class SimpleOperatorsDemo {
    public static void main(String[] args) {
        int a = 10, b = 3;

        // Arithmetic Operators
        System.out.println("a + b = " + (a + b));  // Addition
        System.out.println("a - b = " + (a - b));  // Subtraction

        // Relational Operator
        System.out.println("a > b ? " + (a > b));  // Greater than

        // Logical Operator
        boolean x = true, y = false;
        System.out.println("x && y = " + (x && y));  // Logical AND

        // Assignment Operator
        a += 5;  // a = a + 5
        System.out.println("a after += 5 : " + a);

        // Ternary Operator
        int max = (a > b) ? a : b;
        System.out.println("Maximum = " + max);
    }
}

Output
a + b = 13
a - b = 7
a > b ? true
x && y = false
a after += 5 : 15
Maximum = 15

Decision Making (Control Statements) in Java

Decision-making (or control statements) are used to execute different blocks of code based on certain conditions. They allow a Java program to choose a path of execution depending on whether a condition is true or false.

  • if: Executes a block if a condition is true.
  • if-else: Chooses between two blocks based on a condition.
  • if-else if-else: Tests multiple conditions sequentially.
  • switch: Selects one block from multiple options based on a variable’s value.

Examples:

Java
public class DecisionMakingDemo {
    public static void main(String[] args) {
        int number = 10;

        // if statement
        if (number > 0) {
            System.out.println("The number is positive.");
        }

        // if-else statement
        if (number % 2 == 0) {
            System.out.println("The number is even.");
        } else {
            System.out.println("The number is odd.");
        }

        // if-else-if ladder
        if (number < 0) {
            System.out.println("The number is negative.");
        } else if (number == 0) {
            System.out.println("The number is zero.");
        } else {
            System.out.println("The number is positive.");
        }

        // switch statement
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("Monday");
                break;
            case 2:
                System.out.println("Tuesday");
                break;
            case 3:
                System.out.println("Wednesday");
                break;
            default:
                System.out.println("Other day");
        }
    }
}

Output
The number is positive.
The number is even.
The number is positive.
Wednesday

Explanation: This program demonstrates different decision-making statements in Java such as if, if-else, if-else-if ladder, and switch. It checks whether a number is positive, even or odd, and uses a switch statement to display the day name based on the given value.

Loops in Java

Loops are control statements in Java that allow a block of code to be executed repeatedly as long as a specified condition is true. They help in reducing code repetition.

There are 4 types of loops in Java.

  • for: Used when the number of iterations is known.
  • while: Used when the number of iterations is not known in advance, condition checked before each iteration.
  • do-while: Similar to while loop, but condition is checked after executing the block (executes at least once).
  • for-each: Used to iterate over arrays and collections.
Java
public class LoopsDemo {
    public static void main(String[] args) {

        // 1. For loop
        System.out.println("For Loop:");
        for (int i = 1; i <= 5; i++) {
            System.out.println("i = " + i);
        }

        // 2. While loop
        System.out.println("\nWhile Loop:");
        int j = 1;
        while (j <= 5) {
            System.out.println("j = " + j);
            j++;
        }

        // 3. Do-While loop
        System.out.println("\nDo-While Loop:");
        int k = 1;
        do {
            System.out.println("k = " + k);
            k++;
        } while (k <= 5);

        // 4. Enhanced For Loop (for-each loop)
        System.out.println("\nEnhanced For Loop:");
        int[] numbers = {10, 20, 30, 40, 50};
        for (int num : numbers) {
            System.out.println("num = " + num);
        }
    }
}

Output
For Loop:
i = 1
i = 2
i = 3
i = 4
i = 5

While Loop:
j = 1
j = 2
j = 3
j = 4
j = 5

Do-While Loop:
k = 1
k = 2
k = 3
k = 4
k = 5

Enhanced For Loop:
num = 10
num = 20
num = 30
num = 40
num = 50
Comment