DEV Community

Cover image for Java Notes
DrSimple
DrSimple

Posted on Edited on

Java Notes

Run Java from terminal

javac App.java
java App
Enter fullscreen mode Exit fullscreen mode

Hello World

public class Main {
    public static void main(String[] args) {
        System.out.println("hello");
    }
}

Enter fullscreen mode Exit fullscreen mode

Variables

public class Main {
    public static void main(String[] args) {
        int number = 90;
        double number2 = 90.90;
        float number3 = 90.90F;
        String name = "joe";
        boolean isTall = true;
        char grade = 'A';
        long myId = 90987654345678L;
        byte a = 1;

        System.out.println(a);
        System.out.println(grade);
        System.out.println(myId);
        System.out.println(number);
        System.out.println(number2);
        System.out.println(number3);
        System.out.println(name);
        System.out.println(isTall);

        System.out.println(((Object) number3).getClass().getSimpleName());
        System.out.println(((Object) isTall).getClass().getSimpleName());
    }
}
Enter fullscreen mode Exit fullscreen mode

String Methods

public class Main {
    public static void main(String[] args) {

      String name = "HOLY Spirit";
        System.out.println(name.toLowerCase());
        System.out.println(name.toUpperCase());
    }

}

Enter fullscreen mode Exit fullscreen mode

Enum

public class Main {
    public static void main(String[] args) {

        LEVEL levelHigh = LEVEL.HIGH;
        System.out.println(levelHigh);
        System.out.println(levelHigh.compareTo(LEVEL.LOW));
    }

    enum LEVEL{
        LOW,
        MEDIUM,
        HIGH
    }
}

Enter fullscreen mode Exit fullscreen mode

Condition

public class Main {
    public static void main(String[] args) {
        int age = 90;

        if (age < 18) {
            System.out.println("Underage");
        } else if (age >= 18 && age <= 65) {
            System.out.println("Adult");
        } else {
            System.out.println("Senior");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Switch

public class Main {
    public static void main(String[] args) {

        int age = 0;
        switch (age) {
            case 1 -> System.out.println("very young");
            case 2 -> System.out.println("still too young");
            case 9 -> System.out.println("reasonable");
            default -> System.out.println("no age range selected");
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

For Loop

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

       for(int i = 0; i < number; i++){
           System.out.println("Number is " + i);
       }
    }
}
Enter fullscreen mode Exit fullscreen mode

While Loop

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

       while(number < 15){
           System.out.println("incrementing with 1: " + number);
           number++;
       }
    }
}
Enter fullscreen mode Exit fullscreen mode

Function

public class Main {
    public static void main(String[] args) {
        int response = addSum(2, 3);
        System.out.println(response);
        System.out.println(((Object) response).getClass().getSimpleName());
    }


    public static int addSum(int a, int b) {
        return a + b;
    }
}
Enter fullscreen mode Exit fullscreen mode

Atomicity

AtomicInteger atomicInt = new AtomicInteger(0);

atomicInt.incrementAndGet(); // ++count
atomicInt.getAndIncrement(); // count++

atomicInt.decrementAndGet(); // --count

atomicInt.addAndGet(5);      // count += 5

int value = atomicInt.get(); // get the current value

boolean updated = atomicInt.compareAndSet(5, 10); 
// if current value == 5, update to 10
Enter fullscreen mode Exit fullscreen mode

Array

public class Main {
    public static void main(String[] args) {

        int[] arrays = {1, 2, 3, 4};
        for (int item : arrays) {
            System.out.println("Item :" + item);
        }
    }

}
Enter fullscreen mode Exit fullscreen mode

Class and Object

public class Main {
    public static void main(String[] args) {

        Person personOne =new Person("joe", 78);
        personOne.speak();
    }

}


 class Person{
    private final String name;
    private final int age;

     public Person(String name, int age) {
         this.name = name;
         this.age = age;
     }

     void speak (){
        System.out.println("Name is " + name + " and age is " + age);
    }
}
Enter fullscreen mode Exit fullscreen mode

Inheritance

public class Main {
    public static void main(String[] args) {

        Person personOne =new Person("joe", 78);
        personOne.speak();
        personOne.scream();
    }

}

class Scream {
    void scream(){
        System.out.println("Ahhhhhhh!");
    }
}

 class Person extends Scream{
    private final String name;
    private final int age;

     public Person(String name, int age) {
         this.name = name;
         this.age = age;
     }

     void speak (){
        System.out.println("Name is " + name + " and age is " + age);
    }
}
Enter fullscreen mode Exit fullscreen mode

Interface

public class Main {
    public static void main(String[] args) {

        Person personOne = new Person("joe");
        personOne.scream();
    }

}

interface Scream {
    void scream();
}

class Person implements Scream {

    private final String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    public void scream() {
        System.out.println(name + " screamed, Ahhhhh!!!");
    }
}
Enter fullscreen mode Exit fullscreen mode

Static Method

public class Main {
    public static void main(String[] args) {
        double pi = Utils.PI;
        int square = Utils.square(3);
        System.out.println(pi);
        System.out.println(square);

    }

}


class Utils {
    static final double PI = 3.14;

    static int square(int x) {
        return x * x;
    }
}
Enter fullscreen mode Exit fullscreen mode

This

public class Main {
    public static void main(String[] args) {
        Bark dog = new Bark("woof");
        System.out.println(dog.action);
        System.out.println(dog.play());

    }

}

class Bark{
    String action;

    public Bark(String action) {
        this.action = action; // refers to Bark
    }

    boolean play(){
        System.out.println("Joe is " + this.action);
        return false;
    }
}

Enter fullscreen mode Exit fullscreen mode

Constructor Overloading

public class Main {
    public static void main(String[] args) {
        Bark dog = new Bark("woof");

    }

}

class Bark {
    String name;
    String color;

    public Bark(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public Bark(String name){
        this.name = name;
    }
}
Enter fullscreen mode Exit fullscreen mode

Override (Polymorphism)

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.sound();

    }

}

class Animal {
    void sound(){
        System.out.println("woof");
    }
}

class Dog extends Animal{
    @Override
    void sound(){
        System.out.println("Barking...");
    }
}
Enter fullscreen mode Exit fullscreen mode

Abstract

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.sound();

        Animal n = new Animal(); // abstract class cannot be instantiated
    }

}

abstract class Animal {
    void sound(){
        System.out.println("woof");
    }
}

class Dog extends Animal{
    @Override
    void sound(){
        System.out.println("Barking...");
    }
}
Enter fullscreen mode Exit fullscreen mode

super()

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
    }

}


class Animal {
    Animal() {
        System.out.println("Animal created");
    }
}

class Dog extends Animal {
    Dog() {
        super(); // calls Animal constructor
        System.out.println("Dog created");
    }
}
Enter fullscreen mode Exit fullscreen mode

Wrapper Class

public class Main {
    public static void main(String[] args) {
        Integer num = 90;
        Float f1 = 90.90F;      //use wrapper class if you are working with collections, JSON serialization, null-checking
        System.out.println(num.equals(90)); //stick with primitives if you need performance and don't need object features.
    }
//  Wrapper classes provide helper methods (e.g., Integer.parseInt(), Double.compare()).
}

Enter fullscreen mode Exit fullscreen mode

String Builder

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hi");
        sb.append(" there!");
        System.out.println(sb.toString());
    }
}
Enter fullscreen mode Exit fullscreen mode

Null Pointer

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static java.lang.Character.getName;

public class Main {
    public static void main(String[] args) {

        try {
            //Avoiding null NPE
            String myName = "";
            int[] myNumbers = new int[10];
            List<String> items = new ArrayList<>();
            System.out.println(myName);
            System.out.println(myNumbers);
            System.out.println(items);

            if (myName != null) {
                System.out.println("printing this");
            }

            String possiblyNullName = "";
            String nullName = possiblyNullName != null ? possiblyNullName : "Unknown";
            System.out.println(nullName);


            String name = null;
            System.out.println(name.length()); //πŸ’₯ NullPointerException

            int[] numbers = null;
            System.out.println(numbers.length); // πŸ’₯ NPE
        } catch (NullPointerException e) {
            System.out.println(e.getMessage());
        }

    }

}
Enter fullscreen mode Exit fullscreen mode

List

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> animals = new ArrayList<>(); //List<Object>
        animals.add("monkey");
        animals.add("lion");
        System.out.println(animals);
        for (String animal: animals){
            System.out.println("I am a/an " + animal);
        }
    }

}

Enter fullscreen mode Exit fullscreen mode

HashMap

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, String> response = new HashMap<>();
        response.put("message", "success");
        response.put("status", "ongoing");
        System.out.println(response);
        System.out.println(((Object) response).getClass().getSimpleName());
    }

}
Enter fullscreen mode Exit fullscreen mode

LinkedMap

import java.util.LinkedHashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // Create a LinkedHashMap
        LinkedHashMap<String, String> capitals = new LinkedHashMap<>();

        // Add key-value pairs
        capitals.put("Nigeria", "Abuja");
        capitals.put("USA", "Washington D.C.");
        capitals.put("France", "Paris");
        capitals.put("Japan", "Tokyo");

        // Iterate in insertion order
        System.out.println("Countries and their Capitals (in insertion order):");
        for (Map.Entry<String, String> entry : capitals.entrySet()) {
            System.out.println(entry.getKey() + " β†’ " + entry.getValue());
        }

        // Access a value
        System.out.println("\nCapital of Japan is: " + capitals.get("Japan"));

        // Check if a key exists
        if (capitals.containsKey("France")) {
            System.out.println("France is in the map.");
        }

        // Remove an entry
        capitals.remove("USA");
        System.out.println("\nAfter removing USA:");
        System.out.println(capitals);
    }
}

Enter fullscreen mode Exit fullscreen mode

Stream

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);

        List<Integer> response = numbers.stream()
                .filter(i -> i % 2 == 0)
                .toList();

        System.out.println(response);
    }

}


Enter fullscreen mode Exit fullscreen mode

Stream

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
        List<Integer> response = numbers.stream()
                .filter(i -> i % 2 == 0)
                .toList();

        System.out.println(response);
    }

}

Enter fullscreen mode Exit fullscreen mode

Exception

public class Main {
    public static void main(String[] args) {

        try {
            int response = 10 / 0;
            System.out.println(response);
        }catch (ArithmeticException e){
            System.out.println("Oops!, Error");
        }
    }

}

Enter fullscreen mode Exit fullscreen mode

I/O

import java.io.*;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\CAPTAIN ENJOY\\Downloads\\JavaNote\\src\\text.txt"));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();

            BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\CAPTAIN ENJOY\\Downloads\\JavaNote\\src\\text.txt"));
            writer.write("ner");
            writer.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Lambda

import java.io.*;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<String> names = Arrays.asList("john", "wick", "doe");
        names.forEach(name -> System.out.println("my name is " + name));
    }
}

Enter fullscreen mode Exit fullscreen mode

Constants

public class Main {
    public static void main(String[] args) {

        final int MAX_ATTEMPTS = 909090;
        // MAX_ATTEMPTS = 200; // ❌ Will cause error
        System.out.println(MAX_ATTEMPTS);
    }
}

Enter fullscreen mode Exit fullscreen mode

SOLID

  1. SOLID Principles (OOP Best Practices) S β€” Single Responsibility Principle (SRP) Each class should have one job. Example: A UserService should only handle user logic, not email sending.
class UserService {
    void registerUser(User user) { /* ... */ }
}

class EmailService {
    void sendWelcomeEmail(User user) { /* ... */ }
}

Enter fullscreen mode Exit fullscreen mode

O β€” Open/Closed Principle (OCP)
Classes should be open for extension, but closed for modification.
Example:
Instead of modifying payment logic, extend it:

interface Payment {
    void pay();
}

class CreditCardPayment implements Payment {
    public void pay() { /* ... */ }
}

class UpiPayment implements Payment {
    public void pay() { /* ... */ }
}

Enter fullscreen mode Exit fullscreen mode

L β€” Liskov Substitution Principle (LSP)
Subclasses should replace base classes without breaking behavior.
Example:
If Bird can fly, then Penguin shouldn't extend Bird if it can't fly.

I β€” Interface Segregation Principle (ISP)
Don’t force classes to implement unnecessary methods.
Bad:

interface Animal {
    void fly(); // forces Dog to implement this unnecessarily
}
Enter fullscreen mode Exit fullscreen mode

Good:

interface Bird { void fly(); }
interface Dog { void bark(); }
Enter fullscreen mode Exit fullscreen mode

D β€” Dependency Inversion Principle (DIP)
Depend on abstractions, not concrete classes.

class NotificationService {
    private MessageSender sender;

    NotificationService(MessageSender sender) {
        this.sender = sender;
    }

    void notify(String msg) {
        sender.send(msg);
    }
}

Enter fullscreen mode Exit fullscreen mode

Top comments (0)