Java Basics

Learn Java programming fundamentals

Java Basics

Java is a class-based, object-oriented programming language designed for portability and reliability. This guide covers the fundamentals you need to get started with Java programming.

Variables

Java is statically typed - you must declare variable types:

// Primitive types
int age = 30;
double price = 19.99;
float temperature = 98.6f;
char grade = 'A';
boolean isActive = true;
byte smallNumber = 127;
short mediumNumber = 32767;
long bigNumber = 9223372036854775807L;

// Reference types
String name = "Java";
Integer number = 42;  // Wrapper class

// Final (immutable)
final int MAX_SIZE = 100;
final String COMPANY = "Tech Corp";

// Multiple variables
int x = 1, y = 2, z = 3;

Data Types

Java has primitive and reference types:

// Primitives
int integer = 42;
double decimal = 3.14;
boolean flag = true;
char character = 'J';

// Strings (reference type)
String text = "Hello, World!";
String formatted = String.format("Hello, %s!", "Java");
String concatenated = "Hello" + " " + "World";

// Arrays
int[] numbers = {1, 2, 3, 4, 5};
String[] fruits = {"apple", "banana", "orange"};

Arrays

Arrays are fixed-size collections:

// Creating arrays
int[] numbers = {1, 2, 3, 4, 5};
int[] empty = new int[5];  // All zeros
String[] fruits = new String[3];

// Accessing elements
fruits[0] = "apple";
fruits[1] = "banana";
fruits[2] = "orange";

int first = numbers[0];  // 1
int length = numbers.length;  // 5

// Multi-dimensional arrays
int[][] matrix = {{1, 2}, {3, 4}};
int value = matrix[0][1];  // 2

ArrayList

ArrayList is a dynamic array (growable):

import java.util.ArrayList;

// Creating ArrayList
ArrayList fruits = new ArrayList<>();
ArrayList numbers = new ArrayList();

// Adding elements
fruits.add("apple");
fruits.add("banana");
fruits.add(0, "kiwi");  // Insert at index

// Accessing elements
String first = fruits.get(0);
int size = fruits.size();

// Removing elements
fruits.remove(0);  // Remove at index
fruits.remove("banana");  // Remove by value

// ArrayList methods
fruits.contains("apple");  // true
fruits.indexOf("banana");  // 1
fruits.isEmpty();  // false
fruits.clear();  // Remove all

Loops

Java offers several iteration methods:

// For loop
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

// Enhanced for loop (for-each)
String[] fruits = {"apple", "banana", "orange"};
for (String fruit : fruits) {
    System.out.println(fruit);
}

// While loop
int count = 0;
while (count < 5) {
    System.out.println(count);
    count++;
}

// Do-while loop
do {
    System.out.println(count);
    count--;
} while (count > 0);

// Loop control
for (int i = 0; i < 10; i++) {
    if (i == 3) {
        continue;  // Skip to next iteration
    }
    if (i == 7) {
        break;  // Exit loop
    }
    System.out.println(i);
}

Conditionals

Control flow with if/else statements:

// If/else
int age = 20;
if (age >= 18) {
    System.out.println("Adult");
} else if (age >= 13) {
    System.out.println("Teenager");
} else {
    System.out.println("Child");
}

// Ternary operator
String status = age >= 18 ? "Adult" : "Minor";

// Logical operators
if (age >= 18 && hasLicense) {
    System.out.println("Can drive");
}

if (isWeekend || isHoliday) {
    System.out.println("Day off");
}

if (!isComplete) {
    System.out.println("Not done yet");
}

// Switch statement (Java 14+)
String grade = "B";
switch (grade) {
    case "A" -> System.out.println("Excellent");
    case "B" -> System.out.println("Good");
    case "C" -> System.out.println("Average");
    default -> System.out.println("Needs improvement");
}

// Switch expression (Java 14+)
String result = switch (grade) {
    case "A" -> "Excellent";
    case "B" -> "Good";
    case "C" -> "Average";
    default -> "Needs improvement";
};

Methods

Methods are functions defined within classes:

// Method definition
public static int add(int x, int y) {
    return x + y;
}

// Method with multiple parameters
public static void greet(String name, int age) {
    System.out.println("Hello, " + name + "! You are " + age);
}

// Method overloading
public static int multiply(int a, int b) {
    return a * b;
}

public static double multiply(double a, double b) {
    return a * b;
}

// Method with variable arguments
public static int sum(int... numbers) {
    int total = 0;
    for (int num : numbers) {
        total += num;
    }
    return total;
}

// Calling methods
int result = add(5, 3);  // 8
greet("Java", 30);
int total = sum(1, 2, 3, 4, 5);  // 15

Classes

Java is object-oriented - everything is in a class:

// Class definition
public class Person {
    // Fields (instance variables)
    private String name;
    private int age;
    
    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // Getter methods
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
    
    // Setter methods
    public void setName(String name) {
        this.name = name;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    // Instance method
    public String introduce() {
        return "Hi, I'm " + name + " and I'm " + age + " years old";
    }
}

// Creating objects
Person person = new Person("John", 30);
System.out.println(person.introduce());
person.setAge(31);
System.out.println(person.getAge());

Inheritance

Java supports single inheritance:

// Parent class
public class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void makeSound() {
        System.out.println("Some sound");
    }
}

// Child class
public class Dog extends Animal {
    public Dog(String name) {
        super(name);  // Call parent constructor
    }
    
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
    
    public void wagTail() {
        System.out.println(name + " is wagging tail");
    }
}

// Using inheritance
Dog dog = new Dog("Buddy");
dog.makeSound();  // "Woof!"
dog.wagTail();    // "Buddy is wagging tail"

Collections

Java Collections Framework provides data structures:

import java.util.*;

// List (ArrayList, LinkedList)
List list = new ArrayList<>();
list.add("apple");
list.add("banana");

// Set (HashSet, TreeSet)
Set set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple");  // Duplicate ignored

// Map (HashMap, TreeMap)
Map map = new HashMap<>();
map.put("apple", 5);
map.put("banana", 3);
int count = map.get("apple");  // 5

// Iterating collections
for (String item : list) {
    System.out.println(item);
}

for (Map.Entry entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}