Quick reference

Java Cheat Sheet (Java 21)

Primitives

Type Size Range / Note Default
byte 8-bit -128..127 0
short 16-bit -32,768..32,767 0
int 32-bit ~±2.1B 0
long 64-bit ~±9.2e18 (L suffix) 0L
float 32-bit ~7 digits (f suffix) 0.0f
double 64-bit ~15 digits 0.0d
char 16-bit UTF-16 code unit '\u0000'
boolean JVM-dependent true/false false

Variables

java
1int x = 10;            // explicit2var y = 10;            // inferred (local only, Java 10+)3final int Z = 5;       // constant

Strings

java
1String s = "hi";2s.length(); s.charAt(0); s.substring(1); s.indexOf("i");3s.toUpperCase(); s.trim(); s.strip(); s.isBlank();4s.split(","); String.join("-", "a","b");5s.repeat(3); s.contains("h"); s.replace("h","H");6String t = """7   text block (Java 15+)8   """;9String f = "x=%d".formatted(10);  // or String.format10StringBuilder sb = new StringBuilder().append("a").append("b");

Control flow

java
1if (c) {...} else if (d) {...} else {...}2switch (n) { case 1 -> "one"; default -> "other"; }      // switch expr3var r = switch (obj) {                                     // pattern match4    case Integer i -> "int " + i;5    case String str when str.length() > 3 -> "long str";6    default -> "other";7};8for (int i=0;i<n;i++){} 9for (var e : list){}10while (c){}  do {} while(c);

Collections

java
1List<Integer> list = new ArrayList<>();   // add/get/remove/size2Set<Integer> set = new HashSet<>();       // unique; TreeSet=sorted; LinkedHashSet=insertion order3Map<String,Integer> map = new HashMap<>();// put/get/getOrDefault/computeIfAbsent/merge4Deque<Integer> dq = new ArrayDeque<>();   // stack: push/pop; queue: offer/poll5Queue<Integer> pq = new PriorityQueue<>();// min-heap by default6List<Integer> imm = List.of(1,2,3);       // immutable factory

Streams

java
1list.stream()2    .filter(x -> x > 0)3    .map(x -> x * 2)4    .sorted()5    .distinct()6    .limit(10)7    .collect(Collectors.toList());      // or .toList()8list.stream().mapToInt(Integer::intValue).sum();9list.stream().collect(Collectors.groupingBy(fn));10list.stream().reduce(0, Integer::sum);11IntStream.range(0, n).forEach(System.out::println);

Optional

java
1Optional<String> o = Optional.ofNullable(x);2o.map(String::length).orElse(0);3o.ifPresent(System.out::println);4o.orElseThrow();

Functional interfaces

Interface Method Use
Supplier<T> get() produce
Consumer<T> accept(t) consume
Function<T,R> apply(t) transform
Predicate<T> test(t) boolean test
BiFunction<T,U,R> apply(t,u) two args
UnaryOperator<T> apply(t) T→T

Records, sealed, enums

java
1record Point(int x, int y) {}2sealed interface Shape permits Circle, Square {}3enum Day { MON, TUE; }

Exceptions

java
1try (var r = open()) { ... }              // try-with-resources2catch (IOException | SQLException e) {...} // multi-catch3finally { ... }4throw new IllegalArgumentException("msg");

Concurrency

java
1Thread.ofVirtual().start(() -> {});                 // virtual thread (Java 21)2ExecutorService ex = Executors.newFixedThreadPool(4);3Future<Integer> f = ex.submit(() -> 42);4CompletableFuture.supplyAsync(() -> 1).thenApply(x -> x+1);5synchronized(lock) {}  // mutual exclusion6AtomicInteger ai = new AtomicInteger();

Big-O quick reference

Structure Access Search Insert Delete
Array O(1) O(n) O(n) O(n)
ArrayList O(1) O(n) O(1)* O(n)
LinkedList O(n) O(n) O(1) O(1)
HashMap O(1)* O(1)* O(1)*
TreeMap O(log n) O(log n) O(log n)
Heap O(n) O(log n) O(log n)

* amortized / average.

Compile & run

bash
1javac --release 21 -d out File.java && java -cp out File2java File.java          # single-file source launch