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