The labs on this site need JavaScript to run. The same content is written out below.
Learn
Java
From syntax to object-oriented programming, collections, threads, and the JVM. See what happens inside when code runs.
Basic syntax
Classes and objects
Commonly used classes
- == and equals — Why is == false when the values are the same?
- equals and hashCode — Why can HashMap not find the key when you override only equals?
- String, StringBuilder — Why is the original unchanged after you call a string method?
- Dates and times — What date do you get when you add one month to January 31?
- Optional — Why does the default-value code in orElse run even when a value is present?
Exceptions
Generics, enums, and annotations
- Generics — What does the <Integer> in List<Integer> protect you from?
- Enum classes — Why does an enum saved as a number come back as a different constant?
- Annotations — What really happens when you just add an annotation with @?
Collections
Lambdas and streams
Threads and concurrency
JVM
I/O