📋 Cheat Sheets
· 4 min read

Java Cheat Sheet — Syntax, Collections, and Common Patterns


Some links in this article are affiliate links. We earn a commission at no extra cost to you when you purchase through them. Full disclosure.

Click any item to expand the explanation and examples. Comparing languages? See Kotlin vs Java or Java vs Python.

📝 Basics

Variables and types basics
// Primitives
int count = 42;
long big = 9999999999L;
double price = 19.99;
float rate = 3.14f;
boolean active = true;
char letter = 'A';
byte b = 127;
short s = 32000;

// Strings (not a primitive — it’s an object) String name = “Alice”; String greeting = “Hello ” + name;

// var (Java 10+ — type inference) var list = new ArrayList<String>(); var count = 42;

// Constants final int MAX_SIZE = 100; static final String APP_NAME = “MyApp”;

// Arrays int[] nums = {1, 2, 3, 4, 5}; String[] names = new String[10]; int[][] matrix = {{1, 2}, {3, 4}};

String operations basics
String s = "Hello World";

s.length() // 11 s.charAt(0) // ‘H’ s.substring(0, 5) // “Hello” s.toLowerCase() // “hello world” s.toUpperCase() // “HELLO WORLD” s.trim() // Remove whitespace s.contains(“World”) // true s.startsWith(“Hello”) // true s.indexOf(“World”) // 6 s.replace(“World”, “Java”) // “Hello Java” s.split(” ”) // [“Hello”, “World”] s.isEmpty() // false s.isBlank() // false (Java 11+)

// String comparison (NEVER use ==) s.equals(“Hello World”) // true s.equalsIgnoreCase(“hello world”) // true

// String formatting String.format(“Hello %s, age %d”, name, age); “Hello %s”.formatted(name); // Java 15+

// Text blocks (Java 15+) String json = """ { “name”: “Alice”, “age”: 30 } """;

📦 Collections

List, Set, Map collections
// List (ordered, allows duplicates)
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.get(0);           // "Alice"
names.size();           // 2
names.contains("Alice"); // true
names.remove("Bob");
names.isEmpty();

// Immutable list (Java 9+) var names = List.of(“Alice”, “Bob”, “Carol”);

// Set (unique, unordered) Set<String> tags = new HashSet<>(); tags.add(“java”); tags.add(“java”); // Ignored — already exists tags.size(); // 1

// Map (key-value) Map<String, Integer> ages = new HashMap<>(); ages.put(“Alice”, 30); ages.get(“Alice”); // 30 ages.getOrDefault(“Bob”, 0); // 0 ages.containsKey(“Alice”); // true ages.keySet(); // Set of keys ages.values(); // Collection of values ages.entrySet(); // Set of entries

// Immutable map (Java 9+) var ages = Map.of(“Alice”, 30, “Bob”, 25);

🔁 Control Flow

Loops and conditionals flow
// For loop
for (int i = 0; i < 10; i++) { }

// Enhanced for (foreach) for (String name : names) { }

// While while (condition) { }

// Switch (classic) switch (day) { case “MON”: System.out.println(“Monday”); break; case “FRI”: System.out.println(“Friday”); break; default: System.out.println(“Other”); }

// Switch expression (Java 14+) String result = switch (day) { case “MON”, “TUE”, “WED”, “THU”, “FRI” -> “Weekday”; case “SAT”, “SUN” -> “Weekend”; default -> “Unknown”; };

// Ternary String status = age >= 18 ? “adult” : “minor”;

⚡ Streams (Java 8+)

Stream operations streams
List<String> names = List.of("Alice", "Bob", "Carol", "Dave");

// Filter names.stream() .filter(n -> n.startsWith(“A”)) .toList(); // [“Alice”]

// Map (transform) names.stream() .map(String::toUpperCase) .toList(); // [“ALICE”, “BOB”, …]

// Find names.stream().findFirst(); // Optional<String> names.stream().anyMatch(n -> n.equals(“Bob”)); // true

// Reduce List<Integer> nums = List.of(1, 2, 3, 4, 5); int sum = nums.stream().reduce(0, Integer::sum); // 15

// Collect to map Map<String, Integer> nameLengths = names.stream() .collect(Collectors.toMap(n -> n, String::length));

// Sort names.stream().sorted().toList(); names.stream().sorted(Comparator.reverseOrder()).toList();

// Chain names.stream() .filter(n -> n.length() > 3) .map(String::toUpperCase) .sorted() .toList();

🏗️ OOP

Classes, interfaces, records oop
// Class
public class User {
    private String name;
    private int age;
public User(String name, int age) {
    this.name = name;
    this.age = age;
}

public String getName() { return name; }
public int getAge() { return age; }

}

// Record (Java 16+ — immutable data class) public record User(String name, int age) {} // Auto-generates constructor, getters, equals, hashCode, toString

// Interface public interface Printable { void print(); default void printUpperCase() { // Default method System.out.println(toString().toUpperCase()); } }

// Enum public enum Status { ACTIVE, INACTIVE, PENDING; }

// Sealed classes (Java 17+) public sealed interface Shape permits Circle, Rectangle {} public record Circle(double radius) implements Shape {} public record Rectangle(double w, double h) implements Shape {}

⚠️ Error Handling

try/catch, Optional errors
// Try-catch
try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.err.println("Error: " + e.getMessage());
} finally {
    // Always runs
}

// Try-with-resources (auto-closes) try (var reader = new BufferedReader(new FileReader(“file.txt”))) { String line = reader.readLine(); }

// Optional (avoid null) Optional<String> name = Optional.of(“Alice”); Optional<String> empty = Optional.empty();

name.isPresent(); // true name.get(); // “Alice” name.orElse(“Unknown”); // “Alice” empty.orElse(“Unknown”); // “Unknown” name.map(String::toUpperCase); // Optional[“ALICE”] name.ifPresent(System.out::println);

Quick access: Raycast lets you search commands, snippets, and cheat sheets instantly from your keyboard. Free for Mac.

Related: java nullpointerexception fix · java interview questions · kotlin vs java