Java glossary
Every term the course uses, in plain words. Search for a word you met somewhere, or browse by letter. Each entry links to the lesson that teaches it properly.
A14
- Abstract classalso abstract, abstract method, concrete class
- A class marked
abstractthat you cannot create objects from, made to be a shared base for subclasses. It can hold fields and finished methods, plus abstract methods with no body that every concrete (non-abstract) subclass must write. - Learn it in 23. Abstract classes and 25. Interface vs abstract classSee also Interface, Inheritance, Polymorphism
- Access modifieralso public, private, protected, package-private, visibility
- A keyword that says which code may use a class, field, method or constructor.
publicmeans any code,protectedthe same package and subclasses, no modifier at all the same package only, andprivatethe class itself only. - Learn it in 14. Access modifiers and encapsulation and 44. Packages and importsSee also Encapsulation, Package, Getter and setter
- AI assistantalso AI coding assistant, LLM, large language model, prompt
- A tool built on a large language model that writes, explains and reviews code from a plain-language request, called a prompt. It predicts likely text, so it can be wrong while sounding sure: read, run and test whatever it gives you before you rely on it.
- Learn it in 68. Working with AI coding assistantsSee also Hallucination, Code review, Unit test
- Annotationalso @Deprecated, @SuppressWarnings, @FunctionalInterface
- A note starting with
@that the compiler, a tool or a framework reads, such as@Override,@Testor@RestController.@Deprecatedmarks code you should stop using, and@SuppressWarnings("unchecked")silences one kind of warning. An annotation does nothing by itself until some program looks for it. - Learn it in 17. Method overriding and super, 57. Annotations, docs, stack traces, and the IDE and 22. Testing your code with JUnitSee also @Override, @Test, Javadoc
- APIalso application programming interface, web API, endpoint
- The set of operations a piece of software offers to other code. A library's API is its public classes and methods, and a web API is a set of URLs, called endpoints, that answer HTTP requests, usually with JSON.
- Learn it in 71. Talking to the web: HttpClient and JSON and 72. Your first web API with Spring BootSee also REST, HTTP, JSON
- Application (JavaFX)also Application class, start(), launch(), init(), stop()
- The class every JavaFX program extends.
launch(args)starts the toolkit, which callsinit(), thenstart(Stage), where you build and show the window, and finallystop()when the program ends. - Learn it in 77. Creating and running a JavaFX applicationSee also Stage, JavaFX, JavaFX Application Thread
- Arrange-act-assertalso AAA, arrange, act, assert, given, when, then
- The usual shape of a test: arrange the objects and inputs it needs, act by calling the one method under test, then assert that the result is what you expected. Keeping the three parts apart makes a failing test quick to read.
- Learn it in 22. Testing your code with JUnitSee also Unit test, Assertion
- Arrayalso index, array literal, zero-based indexing
- A fixed number of values of one type under one name, each reached by its index, counting from 0: in an array of length 5,
a[0]is the first element anda[4]the last.new int[5]makes five zeros,{3, 1, 4}lists the values directly, and the size never changes. - Learn it in 6. Arrays, one dimensionSee also length, ArrayIndexOutOfBoundsException, ArrayList
- ArrayIndexOutOfBoundsExceptionalso out of bounds, IndexOutOfBoundsException
- The exception thrown when code uses an array index below 0 or not less than the length, such as
a[5]on an array of length 5. Its message names both numbers:Index 5 out of bounds for length 5. - Learn it in 6. Arrays, one dimension and 9. Reading errors and debuggingSee also Array, Runtime error, Stack trace
- ArrayList
- A list stored in an array that grows by itself as you
addto it. Reading or replacing by index withget(i)andset(i, x)is fast, while removing from the front shifts every later element along. - Learn it in 7. ArrayList: a list that can grow and 43. Inside ArrayList and HashMap: build your ownSee also List, Array, Dynamic array
- Arrays.sortalso Collections.sort, List.sort, TimSort, dual-pivot quicksort
- The library's sorting methods, which real code uses instead of a hand-written sort.
Arrays.sorton numbers uses a dual-pivot quicksort, while sorting objects withArrays.sortorList.sortuses TimSort, a stable sort built on merge sort that is fast on data that is already partly sorted. - Learn it in 37. Comparable, Comparator and sorting and 42. Searching and sorting algorithmsSee also Stable sort, Comparator, Merge sort
- Assertionalso assertEquals, assertThrows, assertTrue, Assertions
- A check inside a test that fails the test when the result is wrong.
assertEquals(expected, actual)compares two values, expected first;assertTrue(condition)checks a condition; andassertThrows(IllegalArgumentException.class, () -> account.withdraw(-5))passes only if that exception is thrown. - Learn it in 22. Testing your code with JUnitSee also JUnit, @Test, Unit test
- AtomicIntegeralso atomic variable, incrementAndGet, AtomicLong
- An
intholder whose updates are atomic, so many threads can change it without a lock:hits.incrementAndGet()never loses an update the waycount++can.AtomicLongandAtomicBooleando the same for other types. - Learn it in 63. Safe sharing: atomics, locks and concurrent collectionsSee also Race condition, Thread safety, synchronized
- Autoboxingalso boxing, unboxing
- Java wrapping a primitive value in its wrapper object by itself, such as an
intbecoming anIntegerwhen you add it to aList<Integer>. Unboxing is the way back, and unboxingnullthrows aNullPointerException. - Learn it in 32. Wrapper classes and autoboxingSee also Wrapper class, Primitive type, Integer cache
B12
- Base case
- The input a recursive method answers directly, without calling itself, such as
if (n == 0) return 1;in a factorial. Every recursive call must move closer to a base case, or the calls never stop and end in aStackOverflowError. - Learn it in 40. Recursion: methods that call themselvesSee also Recursion, StackOverflowError
- Big-Oalso Big O notation, time complexity, space complexity
- A way to say how an algorithm's work grows as its input grows, ignoring constant factors: O(n) means twice the input takes about twice the steps. Space complexity uses the same notation for the extra memory an algorithm needs.
- Learn it in 41. How fast is it? Big-O in plain words and 42. Searching and sorting algorithmsSee also O(1), O(n), O(log n)
- BigDecimalalso scale, setScale, money
- An exact decimal number, used for money. Create it from a String, as in
new BigDecimal("19.99"), and round withsetScale(2, RoundingMode.HALF_UP), where the scale is the number of digits after the decimal point. Compare amounts withcompareTo, becauseequalsalso compares the scale and calls2.0and2.00different. - Learn it in 51. Money and exact numbers: BigDecimal and BigIntegerSee also Floating point, RoundingMode, BigInteger
- BigInteger
- A whole number with no size limit, for values past a
long's 9.2 quintillion, such as the factorial of 30. LikeBigDecimalit is immutable, soa.multiply(b)returns a new number. - Learn it in 51. Money and exact numbers: BigDecimal and BigIntegerSee also BigDecimal, Integer overflow, int
- Binary searchalso linear search, Arrays.binarySearch
- Finding a value in sorted data by checking the middle and throwing away the half that cannot hold it, again and again, so a million items need at most 20 looks. Linear search, checking items one by one from the start, also works on unsorted data but takes O(n) steps.
- Learn it in 42. Searching and sorting algorithms and 41. How fast is it? Big-O in plain wordsSee also O(log n), Arrays.sort, Recursion
- booleanalso true, false, condition
- The primitive type with only two values,
trueandfalse. Every condition in anifor a loop is a boolean expression, such asage >= 18. - Learn it in 2. Variables, types, and input/output and 4. Making decisions: if, else and switchSee also if statement, Logical operator
- Branchalso git branch, git switch
- A movable name for a line of commits, so you can work on a feature without touching
main.git switch -c logincreates a branch calledloginand moves to it, and new commits then go only to that branch. - Learn it in 64. Git and GitHub: saving your workSee also Merge, Commit, Pull request
- break and continuealso break, continue
- Two ways to jump inside a loop.
breakleaves the loop at once, andcontinueskips the rest of the current round and starts the next one.breakalso ends a case in a colon-styleswitch. - Learn it in 5. Loops: for, while, do-while and 4. Making decisions: if, else and switchSee also for loop, while loop, switch statement
- BufferedReaderalso FileReader, readLine, end of file, EOF
- A reader that pulls text in large chunks and hands it out a line at a time with
readLine(), often wrapped around aFileReader.readLine()returnsnullat the end of the file, sowhile ((line = in.readLine()) != null)reads every line. - Learn it in 46. Reading filesQuick guide: How to Read a File in Java, with ExamplesSee also Try-with-resources, IOException, Files
- Build lifecyclealso Maven lifecycle, phase, mvn package
- Maven's fixed order of build steps, called phases; the main ones are
validate,compile,test,package,verify,installanddeploy. Running a phase runs every phase before it, somvn packagecompiles and tests the code before it makes the JAR. - Learn it in 65. Maven and Gradle: building real projectsSee also Maven, JAR file
- Builder patternalso builder
- Making an object with many optional settings step by step through a helper object, then calling
build():new Pizza.Builder().size(12).cheese(true).build(). It replaces constructors with long lists of easily confused arguments. - Learn it in 31. Designing classes well and 71. Talking to the web: HttpClient and JSONSee also Factory method, Immutable
- Bytecodealso .class file
- The instructions
javacwrites into a.classfile. They are not for any one kind of computer: the JVM reads them and runs them on whatever machine it is on. - Learn it in 1. Your first Java programQuick guide: JDK vs JRE vs JVM: What Each One DoesSee also JVM, Compiler, JIT compiler
C35
- Call stackalso stack frame, the stack, stack memory
- The JVM's record of the methods running right now, with one stack frame per call holding that call's parameters and local variables. A call pushes a new frame on top and
returnpops it off, and a stack trace is a printout of the call stack. - Learn it in 40. Recursion: methods that call themselves and 48. Exception handlingSee also Recursion, Stack trace, Heap
- Capturing groupalso group, named group, $1
- A part of a regex inside parentheses whose matched text is saved: in
(\d{4})-(\d{2}),group(1)is the year andgroup(2)the month.(?<year>\d{4})gives a group a name, and$1inreplaceAllputs group 1's text back into the result. - Learn it in 52. Regular expressions: patterns in textSee also Pattern and Matcher, Regular expression
- Castingalso cast, type casting, type conversion, widening, narrowing
- Converting a value to another type. Java widens a value to a bigger type by itself, as in
double d = 5;, but going to a smaller type needs a cast you write, and(int) 9.99cuts off the fraction to give9. - Learn it in 3. Operators, expressions, and castingSee also Integer division, Upcasting and downcasting, Primitive type
- charalso character
- The primitive type for a single character, written in single quotes:
'A'. Acharis stored as a number, so'A' + 1is theint66, and aStringis a sequence of them. - Learn it in 2. Variables, types, and input/output and 21. String practice problemsSee also String, Primitive type
- Character classalso [a-z], \d, \w, \s
- A part of a regex that matches one character from a set:
[aeiou]matches any vowel and[^0-9]anything but a digit. The shortcuts\d,\wand\sstand for a digit, a word character and whitespace. - Learn it in 52. Regular expressions: patterns in textSee also Regular expression, Quantifier
- Checked exceptionalso checked
- An exception the compiler makes you deal with: you must catch it or declare it with
throws, or the code does not compile.IOExceptionandSQLExceptionare checked, because files and databases can fail however careful your code is. - Learn it in 48. Exception handling and 46. Reading filesSee also Unchecked exception, throws, IOException
- ChronoUnitalso ChronoUnit.DAYS
- An enum of time units such as
DAYS,WEEKSandMONTHS.ChronoUnit.DAYS.between(start, end)gives the total number of days between two dates, which is usually what “how many days until” means. - Learn it in 50. Dates and times with java.timeSee also Period, LocalDate, Enum
- Classalso blueprint, class definition
- A blueprint that describes a kind of object: the fields each object holds and the methods it can run.
class Dog { String name; void bark() { ... } }describes dogs, andnew Dog()builds one. - Learn it in 10. Why objects? Class vs object and 11. Creating classes and objectsSee also Object, Field, Method
- ClassCastException
- The exception thrown when a cast names a class the object does not belong to, such as casting a
CattoDog. Check first withinstanceof, or use a pattern such asif (a instanceof Dog d), before you downcast. - Learn it in 18. Polymorphism and 33. Generics: one class for many typesSee also Upcasting and downcasting, instanceof, Pattern matching
- Classpathalso class path, -cp, ClassNotFoundException
- The list of folders and JAR files where the JVM looks for compiled classes, set with
-cpor theCLASSPATHenvironment variable. A class missing from it causes aClassNotFoundExceptionor aNoClassDefFoundError, a common sight when a JDBC driver JAR was left out. - Learn it in 44. Packages and imports and 69. SQL, MySQL, and connecting with JDBCSee also Package, JAR file, Module path
- Code reviewalso review, reviewer
- Another person reading your changes before they are merged, looking for bugs, unclear names and missing tests. Code an AI assistant wrote needs the same review as code from a stranger.
- Learn it in 68. Working with AI coding assistants and 64. Git and GitHub: saving your workSee also Pull request, AI assistant, Refactoring
- Collections Frameworkalso Java collections, Collection, java.util
- The interfaces and classes in
java.utilfor holding groups of objects:List,Set,QueueandMap, and the classes such asArrayList,HashSet,ArrayDequeandHashMapthat implement them. Each interface is a promise about how its elements behave, so you pick the one whose promise you need. - Learn it in 34. The Collections FrameworkSee also List, Set, Map
- Collectorsalso collect, Collector, joining, toMap
- The class of ready-made recipes you hand to
collectto gather a stream's elements:Collectors.toSet(),joining(", ")for one String,toMap(...)for aMapandgroupingBy(...)for groups.toMapthrows anIllegalStateExceptionwhen two elements produce the same key, unless you give it a merge function. - Learn it in 53. Streams: processing collections step by step and 54. Collectors and stream recipesSee also groupingBy, Terminal operation, Stream
- Commentalso //, /* */, single-line comment, multi-line comment
- Text in a source file that the compiler ignores, written for the people who read the code.
//starts a comment that runs to the end of the line, and/*starts one that runs to the next*/, even across many lines. - Learn it in 1. Your first Java programSee also Javadoc, Compiler
- Commitalso git commit, commit message
- A saved snapshot of the staged changes, with an author, a unique ID and a message saying why:
git commit -m "Add login form". Commits form the project's history, and you can return to any of them. - Learn it in 64. Git and GitHub: saving your workSee also Staging area, Branch, Repository
- Compact constructoralso canonical constructor
- A record constructor written without a parameter list, used to check or tidy values before they are stored:
record Age(int years) { Age { if (years < 0) throw new IllegalArgumentException(); } }. It is a short way to write the canonical constructor, the one that takes every component in order. - Learn it in 29. Records: data classes in one lineSee also Record, IllegalArgumentException
- Compact source filealso void main(), instance main method, IO.println, IO.readln
- A Java 25 program with no class declaration: the file holds methods such as
void main()directly, andIO.printlnprints whileIO.readlnreads a line. You run it withjava Hello.java, and Java wraps the file in a class for you. - Learn it in 1. Your first Java program, 56. Modern Java syntax: var, text blocks and more and 45. Scanner and console applicationsSee also main method, JShell
- Comparablealso compareTo, natural order
- An interface that gives a class its natural order through one method,
compareTo, which returns a negative number, zero or a positive number when this object comes before, ties with or comes after the other.String,IntegerandLocalDateimplement it, which is howCollections.sortknows their order. - Learn it in 33. Generics: one class for many types and 37. Comparable, Comparator and sortingSee also Comparator, TreeSet, Arrays.sort
- Comparatoralso Comparator.comparing, thenComparing, reversed
- An object that holds one rule for ordering, kept separate from the class it sorts.
list.sort(Comparator.comparing(Student::grade).thenComparing(Student::name))sorts by grade and breaks ties by name, andreversed()flips an order. - Learn it in 37. Comparable, Comparator and sorting and 53. Streams: processing collections step by stepSee also Comparable, Strategy pattern, Lambda expression
- Compile erroralso compile-time error, syntax error, cannot find symbol
- A mistake the compiler finds before the program runs, such as a missing semicolon, a misspelled name or text put into an
int.javacmakes no bytecode until every one is fixed, so start with the first message: later ones are often side effects of it. - Learn it in 9. Reading errors and debuggingSee also Compiler, Runtime error, Logic error
- Compileralso javac
- The program that reads your
.javasource file, checks it, and turns it into bytecode. Java's compiler isjavac. Mistakes it finds, such as a missing semicolon, are compile errors, and nothing runs until they are fixed. - Learn it in 1. Your first Java programSee also Bytecode, JVM, Compile error
- CompletableFuturealso supplyAsync, thenApply, thenAccept
- A
Futureyou can chain more steps onto, so work continues when the result arrives instead of a thread sitting and waiting:CompletableFuture.supplyAsync(() -> fetchPrice()).thenApply(p -> p * 2). Callingjoin()at the end waits for the final value. - Learn it in 61. Thread pools, executors and futuresSee also Future, ExecutorService, Lambda expression
- Compositionalso has-a, composition over inheritance, delegation
- Building a class from other objects that it keeps in fields: a
Carhas anEngine, instead of inheriting from one. It is usually preferred to inheritance, because the parts can be swapped and the class shows only the methods it chooses. - Learn it in 31. Designing classes wellSee also Inheritance, Dependency injection, Strategy pattern
- Compound assignmentalso +=, -=, *=, /=
- A shortcut that updates a variable with an operator:
total += pricemeanstotal = total + price. It also casts the result back to the variable's type without a word, so afterint n = 10;,n *= 2.5quietly leaves25. - Learn it in 3. Operators, expressions, and casting and 5. Loops: for, while, do-whileSee also Increment and decrement, Casting, Operator precedence
- Concurrencyalso multithreading, parallelism
- Several tasks making progress during the same stretch of time, such as a program downloading files while its window stays responsive. Java does it with threads, and when tasks run at the same instant on different processor cores, that is called parallelism.
- Learn it in 59. Introduction to threadsSee also Thread, Race condition, Virtual thread
- ConcurrentHashMap
- A thread-safe
HashMapthat many threads can read and update at once without corrupting it. Use its one-step methods, such ascounts.merge(word, 1, Integer::sum), because a separategetfollowed by aputcan still race. - Learn it in 63. Safe sharing: atomics, locks and concurrent collectionsSee also HashMap, Thread safety, Race condition
- ConcurrentModificationExceptionalso fail-fast
- The exception a collection's iterator throws when the collection changed size while it was being walked, most often by calling
list.remove(x)inside a for-each loop. Remove through the iterator or withremoveIfinstead; despite the name, it usually happens with a single thread. - Learn it in 7. ArrayList: a list that can grow and 34. The Collections FrameworkSee also Iterator, for-each loop
- Connectionalso DriverManager, getConnection, connection URL, JDBC URL
- An open session with a database, made with
DriverManager.getConnection(url, user, password), where the URL names the database, such asjdbc:mysql://localhost:3306/school. Close it when you are done, ideally with try-with-resources, because a database allows only so many open connections. - Learn it in 69. SQL, MySQL, and connecting with JDBC and 70. Creating and executing queriesSee also JDBC, PreparedStatement, Try-with-resources
- Constructoralso default constructor, this(), constructor chaining
- Code with the class's name and no return type that runs when
newbuilds an object, so the object starts in a valid state. A class that declares no constructor gets an empty default one, and a constructor can hand its work to another withthis(...), or to the parent class's withsuper(...). - Learn it in 13. Constructors and 16. InheritanceSee also Object, this, super
- Containeralso Docker container, docker run
- A running instance of an image, kept apart from other programs with its own files and network but sharing the machine's operating system kernel, which makes it much lighter than a virtual machine.
docker run -p 8080:8080 myappstarts one and makes its port 8080 reachable. - Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Docker image, Docker, Docker Compose
- Continuous integrationalso CI, CI/CD, continuous delivery
- Building and testing every change automatically as soon as it is pushed, so a broken build is caught within minutes instead of days. Continuous delivery goes a step further and also prepares every change that passes for release.
- Learn it in 74. Shipping it: Docker and GitHub ActionsSee also GitHub Actions, Unit test, Pull request
- Controlalso Button, Label, TextField, PasswordField, TextArea, Alert
- A JavaFX node the user works with, such as a
Button,Label,TextField,PasswordFieldorTextArea. What a user types is aStringuntil you parse it, and anAlertis the ready-made dialog for telling them what went wrong. - Learn it in 78. Nodes, controls, and layout panes and 79. Form creation using JavaFXSee also Node (JavaFX), Layout pane, Event handler
- CountDownLatchalso latch, countDown, await
- A one-time gate that opens when its counter reaches zero: worker threads call
countDown()as they finish, andawait()blocks until the count hits zero. It lets the main thread wait until all five of its downloads are complete. - Learn it in 63. Safe sharing: atomics, locks and concurrent collectionsSee also Thread lifecycle, ExecutorService
- CRUDalso create, read, update, delete, INSERT, SELECT, UPDATE, DELETE
- Create, read, update and delete: the four things most programs do with stored data. In SQL they are
INSERT,SELECT,UPDATEandDELETE, and in a REST API they are usuallyPOST,GET,PUTandDELETE. - Learn it in 70. Creating and executing queries, 81. Database support of a JavaFX application and 73. Saving data with Spring Data JPASee also SQL, REST, JpaRepository
- Custom exceptionalso user-defined exception
- An exception class you write for your own program by extending
Exception(checked) orRuntimeException(unchecked), such asclass InsufficientFundsException extends RuntimeException. Its name tells the reader exactly what went wrong. - Learn it in 48. Exception handlingSee also throw, Checked exception, Unchecked exception
D15
- Databasealso DBMS, RDBMS, MySQL, table, primary key
- A program that stores data safely and answers questions about it. A relational database, such as MySQL, keeps data in tables, where each column has a name and a type and each row is one record, and a primary key column gives every row a unique identity.
- Learn it in 69. SQL, MySQL, and connecting with JDBCSee also SQL, JDBC, CRUD
- DateTimeFormatteralso ofPattern, date format, ISO 8601
- Turns dates and times into text, and text back into dates, using a pattern:
DateTimeFormatter.ofPattern("dd/MM/yyyy")formats 14 March 2025 as14/03/2025. Letter case matters, sinceMMis the month andmmthe minute, and without a formattertoStringgives the ISO 8601 form,2025-03-14. - Learn it in 50. Dates and times with java.timeSee also LocalDate, Period
- Deadlock
- Two or more threads stuck forever, each holding a lock that another one needs. If thread A holds lock 1 and waits for lock 2 while thread B holds lock 2 and waits for lock 1, neither can move; taking locks in the same order everywhere prevents it.
- Learn it in 63. Safe sharing: atomics, locks and concurrent collectionsSee also synchronized, ReentrantLock, Thread lifecycle
- Debuggingalso debugger, breakpoint, step over, rubber duck debugging, print debugging
- Finding and fixing the cause of a bug by ruling out, check by check, where it cannot be. Printed values help, and a debugger lets you pause at a breakpoint and step over or into one line at a time while you watch every variable. Explaining the code out loud, line by line, is called rubber duck debugging.
- Learn it in 9. Reading errors and debugging and 57. Annotations, docs, stack traces, and the IDESee also Stack trace, Logic error, IDE
- Dependencyalso library, third-party library, Maven Central
- A library your project uses that someone else wrote, such as JUnit or Jackson, listed in
pom.xmlorbuild.gradleby its group, name and version. The build tool downloads it, along with the libraries it needs in turn, from a repository such as Maven Central. - Learn it in 65. Maven and Gradle: building real projectsSee also Maven, Gradle, pom.xml
- Dependency injectionalso DI, constructor injection, bean, inversion of control
- Handing an object the things it needs, usually through its constructor, instead of letting it create them itself. A class that takes a
Storeinterface can be given a real database store or a fake one in a test, and Spring Boot does this wiring for you, creating and passing in objects it calls beans. - Learn it in 31. Designing classes well and 72. Your first web API with Spring BootSee also Composition, Interface, Spring Boot
- Dequealso ArrayDeque, double-ended queue
- A double-ended queue, pronounced “deck”: you can add and remove at both the front and the back.
ArrayDequeis the standard class, used both as a stack and as a queue. - Learn it in 34. The Collections Framework and 38. Stacks, queues and dequesSee also Stack, Queue
- Dockeralso containerization
- A tool that packages an app with everything it needs to run, such as the Java runtime, into an image, then runs that image as an isolated container. The same image runs the same way on your laptop, a teammate's and a server.
- Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Docker image, Container, Dockerfile
- Docker Composealso compose.yaml, docker-compose.yml, docker compose up
- A tool for running several containers together, such as your API and a MySQL database, described in one
compose.yamlfile.docker compose upstarts them all on a shared network, where each finds the others by service name. - Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Container, Docker
- Docker imagealso image, container image
- A read-only package holding an app and everything it needs, built in layers from a Dockerfile. You can run many containers from one image, and share images through a registry such as Docker Hub.
- Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Container, Dockerfile, Docker
- Dockerfilealso FROM, multi-stage build
- A text file of instructions for building an image:
FROMpicks a starting image such as a Java runtime,COPYadds your JAR andENTRYPOINTsays how to start it. A multi-stage build compiles the app in one stage with a full JDK, then copies only the result into a small runtime image. - Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Docker image, Docker, JAR file
- doublealso decimal number
- The primitive type for numbers with a fractional part, such as
3.75. It stores the nearest binary fraction, so0.1 + 0.2prints0.30000000000000004, and money belongs in aBigDecimalinstead. - Learn it in 2. Variables, types, and input/output and 51. Money and exact numbers: BigDecimal and BigIntegerSee also Floating point, BigDecimal, Primitive type
- Durationalso Duration.between
- An exact amount of time in seconds and nanoseconds, such as
Duration.ofMinutes(90), which prints asPT1H30M. Use it for clock times and timings, andPeriodfor calendar dates. - Learn it in 50. Dates and times with java.timeSee also Period, LocalDate, ChronoUnit
- Dynamic arrayalso growable array, capacity, resize, amortized cost
- A list stored in an array with spare room, as
ArrayListis: its capacity is the array's length, which is usually more than the list's size. When the array is full, a bigger one (half as big again inArrayList) is made and everything is copied across. The copies are rare enough that adding to the end costs O(1) on average, which is called amortized O(1). - Learn it in 43. Inside ArrayList and HashMap: build your own and 7. ArrayList: a list that can growSee also ArrayList, Array, Load factor
- Dynamic dispatchalso late binding, runtime type, declared type
- Choosing which version of an overridden method to run from the object's real class while the program runs. In
Animal a = new Dog();, the declared typeAnimaldecides which methods you may call, and the runtime typeDogdecides which version ofa.speak()runs. - Learn it in 17. Method overriding and super and 18. PolymorphismSee also Polymorphism, Overriding, Upcasting and downcasting
E12
- Edge casealso corner case, boundary value
- An input at the limits of what code must handle: an empty list, zero, a negative number, the first or last element, or a value right at a boundary, such as exactly 18 for an adult. Bugs gather at the edges, so good tests check them on purpose.
- Learn it in 22. Testing your code with JUnitSee also Unit test, Parameterized test
- Encapsulationalso data hiding, information hiding, invariant
- Keeping an object's fields
privateand letting other code change them only through methods, so the object can refuse bad values. ABankAccountwith a private balance can make sure a withdrawal never takes it below zero, a rule that always holds and is called an invariant. - Learn it in 14. Access modifiers and encapsulation and 19. OOP practice: Student, Bank, EmployeeSee also Access modifier, Getter and setter, Immutable
- @Entityalso entity, @Id, @GeneratedValue
- The JPA annotation that maps a class to a database table, one object per row. The field that holds the primary key is marked
@Id, often with@GeneratedValueso the database picks each new number. - Learn it in 73. Saving data with Spring Data JPASee also JPA, JpaRepository, Database
- Enumalso enumeration, enum type
- A type with a fixed set of named values:
enum Size { SMALL, MEDIUM, LARGE }. A variable of that type can hold only those values, and an enum can have fields, constructors and methods like a class. - Learn it in 28. Enums, lambdas, and functional interfacesSee also Switch expression, final, Class
- equalsalso ==, == vs equals, equality, identity
- The method that asks whether two objects hold the same value:
a.equals(b). For objects,==asks a different question, whether both variables point at the same object, so compare strings, records and wrapper values withequals. - Learn it in 15. The this keyword and object references, 36. equals, hashCode and toString and 20. Strings, StringBuilder, StringBufferSee also hashCode, Reference, String
- Escape sequencealso \n, \t, backslash
- A backslash and a letter that stand for a character you cannot type straight into a string:
\nis a new line,\ta tab,\"a double quote and\\one backslash. So"a\tb"prints a, then a tab, then b. - Learn it in 2. Variables, types, and input/outputSee also String, Text block, char
- Event dispatch chainalso event bubbling, bubbling phase, capturing phase, event filter, consume
- The route an event travels through the scene graph: down from the stage to the target node, running event filters, then back up, running event handlers. Calling
consume()on the event ends its trip at that point. - Learn it in 80. Event handling and GUI programsSee also Event handler, Scene graph
- Event handleralso EventHandler, setOnAction, ActionEvent, handle
- Code that JavaFX runs when an event happens, such as a button press:
button.setOnAction(e -> save());. The handler receives an event object, anActionEventfor a button, that says what happened and where. - Learn it in 79. Form creation using JavaFX and 80. Event handling and GUI programsSee also Event-driven programming, Lambda expression, Event dispatch chain
- Event-driven programmingalso event-driven, event loop
- A style where the program sets everything up and then waits, and the toolkit calls your code when something happens, such as a click or a key press. Instead of one script running top to bottom, you write a handler for each event.
- Learn it in 76. JavaFX overview, features, and architecture and 80. Event handling and GUI programsSee also Event handler, JavaFX Application Thread, JavaFX
- Exceptionalso exception handling, Throwable, Error
- An object Java throws to say “I cannot do what you asked”, which travels up the call stack until a
catchhandles it. Everything that can be thrown descends fromThrowable:Exceptionfor problems a program can handle, andError, such asStackOverflowError, for serious trouble inside the JVM. - Learn it in 9. Reading errors and debugging and 48. Exception handlingSee also try-catch, Checked exception, Stack trace
- Executable JARalso runnable JAR, java -jar, manifest, Main-Class, fat JAR
- A JAR whose manifest file,
META-INF/MANIFEST.MF, names the class withmainin aMain-Classline, sojava -jar app.jarruns it. A fat JAR, the kind Spring Boot builds, also packs every dependency inside. - Learn it in 67. Packaging and shipping a Java appSee also JAR file, jpackage, main method
- ExecutorServicealso thread pool, Executors, submit, shutdown
- A service that runs tasks on threads it manages: you
submita task and get aFutureback.Executors.newFixedThreadPool(4)keeps a pool of four threads and reuses them for every task, and you callshutdown(), or use try-with-resources, when no more tasks will come. - Learn it in 61. Thread pools, executors and futures and 62. Virtual threadsSee also Future, Virtual thread, Runnable
F14
- Factory methodalso static factory method, factory
- A static method that creates and returns an object for you instead of a constructor call:
List.of(1, 2),LocalDate.of(2025, 3, 14)andInteger.valueOf(5)are factory methods. It can have a descriptive name, reuse existing objects or return a subclass. - Learn it in 31. Designing classes well and 29. Records: data classes in one lineSee also Builder pattern, Constructor, Strategy pattern
- Fieldalso instance variable, attribute, member variable, default value
- A variable declared in a class but outside its methods, so every object carries its own copy, such as each
Student's ownname. A field you have not set holds a default value:0for numbers,falseforbooleanandnullfor objects. - Learn it in 11. Creating classes and objects and 13. ConstructorsSee also Class, Encapsulation, static
- Filesalso Files.readString, Files.readAllLines, Files.writeString, java.nio.file, CSV, UTF-8
- A class of static methods in
java.nio.filethat do a whole file job in one call:Files.readString(path)reads a file into a String,Files.readAllLines(path)into aList<String>, andFiles.writeString(path, text)writes one. They read and write UTF-8 text by default, and they are the usual way to load a CSV file, a plain-text table with one record per line and commas between the fields. - Learn it in 49. Path and Files: modern file handlingQuick guides: How to Read a File in Java, with Examples, How to Write to a File in JavaSee also Path, IOException, BufferedReader
- FileWriteralso BufferedWriter, PrintWriter, append mode, flush, buffer
- A writer that puts text into a file, replacing what was there unless you open it in append mode with
new FileWriter("log.txt", true). Writers hold text in a buffer, a block of memory, so it reaches the file only onflush()orclose(), which is why you open them with try-with-resources. - Learn it in 47. Writing filesQuick guide: How to Write to a File in JavaSee also Try-with-resources, BufferedReader, Files
- filteralso Stream.filter, Predicate
- The stream operation that keeps only the elements a test accepts:
scores.stream().filter(s -> s >= 50)keeps the passing scores. The test is aPredicate, a function that returns aboolean. - Learn it in 53. Streams: processing collections step by stepSee also map (streams), Stream, Lambda expression
- finalalso constant, static final, final class, final method
- A keyword meaning the thing cannot change: a
finalvariable is assigned once, afinalmethod cannot be overridden and afinalclass, such asString, cannot be extended. A constant is astatic finalfield named in capitals, such asMAX_SIZE, and afinalreference can still point at an object whose fields change. - Learn it in 26. The static and final keywordsSee also static, Immutable, Enum
- finallyalso finally block
- A block after
try(and anycatch) that runs whether or not an exception happened, even when thetryblock returns early. It is for cleanup such as closing a file, though try-with-resources usually does that job better. - Learn it in 48. Exception handlingSee also try-catch, Try-with-resources
- flatMapalso flatten
- A stream operation that turns each element into a stream of its own and joins them all into one flat stream. A list of orders, each with a list of items, becomes one stream of every item with
orders.stream().flatMap(o -> o.items().stream()). - Learn it in 54. Collectors and stream recipesSee also map (streams), Stream
- Floating pointalso floating-point number, float, rounding error, 0.1 + 0.2
- How
doubleandfloatstore numbers: as the nearest binary fraction, which is exact for halves and quarters but not for tenths. That is why0.1 + 0.2prints0.30000000000000004, and why money is kept inBigDecimal. - Learn it in 51. Money and exact numbers: BigDecimal and BigInteger and 2. Variables, types, and input/outputSee also double, BigDecimal
- for loopalso for, loop counter, loop
- A loop with its counter built into the first line:
for (int i = 0; i < 5; i++)setsito 0, runs the body whilei < 5, and adds one after each round. Use it when you know how many rounds you need. - Learn it in 5. Loops: for, while, do-while and 6. Arrays, one dimensionSee also while loop, for-each loop, break and continue
- for-each loopalso enhanced for loop, for each
- A loop that visits every element of an array or collection in turn:
for (String name : names). It gives you no index, and changing a collection's size inside one usually ends in aConcurrentModificationException. - Learn it in 6. Arrays, one dimension and 7. ArrayList: a list that can growQuick guide: The for-each Loop in Java (Enhanced for Loop)See also for loop, Iterator, ConcurrentModificationException
- Functional interfacealso @FunctionalInterface, single abstract method
- An interface with exactly one abstract method, such as
Comparator,RunnableorPredicate. Because there is only one method to fill in, a lambda or a method reference can stand in for an object that implements it. - Learn it in 28. Enums, lambdas, and functional interfaces and 53. Streams: processing collections step by stepSee also Lambda expression, Method reference, Interface
- Futurealso Callable, Future.get
- A handle to the result of a task still running on another thread, whose
get()waits for the result and returns it. A task that returns a value is aCallable: itscall()method, unlikeRunnable'srun(), gives back a result and may throw a checked exception. - Learn it in 61. Thread pools, executors and futuresSee also ExecutorService, CompletableFuture, Runnable
- FXMLalso .fxml, Scene Builder, FXMLLoader
- An XML format for describing a JavaFX screen's layout in a file instead of building it in Java code. Scene Builder, a free drag-and-drop designer, writes FXML for you, and
FXMLLoaderturns the file back into nodes. - Learn it in 76. JavaFX overview, features, and architecture and 79. Form creation using JavaFXSee also Scene graph, JavaFX
G10
- Garbage collectionalso garbage collector, GC
- The JVM's automatic cleanup of objects that no variable can reach any more, which frees their memory for new objects. You never delete an object yourself in Java.
- Learn it in 1. Your first Java program and 39. Linked lists: nodes and referencesSee also Heap, Reference, JVM
- Genericsalso generic class, generic method, type parameter, <T>, bounded type, diamond operator
- Writing a class or method once with a type parameter such as
<T>, then using it with any type: aBox<String>holds only strings, and the compiler checks every value you put in. A bound such as<T extends Number>limits which types fit, and the diamond<>innew ArrayList<>()lets the compiler fill in the type. - Learn it in 33. Generics: one class for many types and 34. The Collections FrameworkSee also Wildcard, Type erasure, ArrayList
- @GetMappingalso @PostMapping, @PutMapping, @DeleteMapping, @PathVariable, @RequestBody
- Ties HTTP
GETrequests for a path to a controller method:@GetMapping("/tasks/{id}")runs it forGET /tasks/42, and a parameter marked@PathVariablereceives the 42.@PostMapping,@PutMappingand@DeleteMappingdo the same for the other methods, and@RequestBodyturns a request's JSON into a Java object. - Learn it in 72. Your first web API with Spring BootSee also @RestController, HTTP, REST
- Getter and setteralso getter, setter, accessor, mutator
- Methods that read and change a private field: a getter such as
getName()returns its value, and a setter such assetName(String name)changes it and can reject a bad value. Records name their getters after the field, as inpoint.x(), with noget. - Learn it in 14. Access modifiers and encapsulation and 29. Records: data classes in one lineSee also Encapsulation, Field, Record
- Gitalso version control, source control
- A version control system: it records snapshots of a project's files as commits, so you can see every change, go back to any earlier state and work on several versions at once. Git runs on your own computer, and GitHub is a website that hosts Git repositories.
- Learn it in 64. Git and GitHub: saving your workSee also Repository, Commit, GitHub
- GitHub
- A website that hosts Git repositories online, so a team can share code, review changes in pull requests and run automated checks with GitHub Actions. Git is the tool, and GitHub is one place to keep a shared copy of what it tracks.
- Learn it in 64. Git and GitHub: saving your work and 74. Shipping it: Docker and GitHub ActionsSee also Git, Pull request, GitHub Actions
- GitHub Actionsalso workflow, .github/workflows
- GitHub's built-in automation: YAML workflow files in
.github/workflowsdescribe jobs, such as building and testing the project, that run on GitHub's machines after every push or pull request. A red cross on a pull request means a job failed. - Learn it in 74. Shipping it: Docker and GitHub ActionsSee also Continuous integration, GitHub, Pull request
- .gitignore
- A file listing the files and folders Git should not track, one pattern per line, such as
target/,*.classand.env. Build output, editor settings and secrets such as passwords belong in it. - Learn it in 64. Git and GitHub: saving your workSee also Git, Repository
- Gradlealso build.gradle, build.gradle.kts, gradlew
- A build tool that does the same jobs as Maven, configured with a script in Kotlin (
build.gradle.kts) or Groovy (build.gradle) instead of XML../gradlew buildcompiles, tests and packages the project with the Gradle version the project asks for. - Learn it in 65. Maven and Gradle: building real projectsSee also Maven, Dependency
- groupingByalso Collectors.groupingBy, partitioningBy, counting
- A collector that sorts a stream's elements into a
Mapof lists by a key:groupingBy(Student::grade)gives each grade with its students. A second collector summarizes each group, as ingroupingBy(Student::grade, counting()), andpartitioningByis the two-group version, with the keysfalseandtrue. - Learn it in 54. Collectors and stream recipesSee also Collectors, Map, Stream
H8
- Hallucination
- An answer from an AI model that sounds right but is made up, such as a method that does not exist or a library version that was never released. The compiler, the official documentation and your own tests are how you catch it.
- Learn it in 68. Working with AI coding assistantsSee also AI assistant, Javadoc, Unit test
- Hash collisionalso collision, bucket, chaining
- Two different keys landing in the same bucket, the slot in a hash table's array that a key's hash code picks. A
HashMapkeeps both entries in that bucket, chained together, and tells them apart withequals; many collisions make lookups slow. - Learn it in 35. HashMap and HashSet: finding things fast and 43. Inside ArrayList and HashMap: build your ownSee also hashCode, HashMap, Load factor
- hashCode
- A method every object has that returns an
intsummary of the object. Hash-based collections such asHashMapuse it to decide where an object goes, so two objects that areequalsmust return the same hash code. - Learn it in 36. equals, hashCode and toString and 35. HashMap and HashSet: finding things fastSee also HashMap, equals, Hash collision
- HashMapalso map, dictionary, dict, hash table
- A collection of key and value pairs that finds a value from its key in about the same time however big it grows. It uses each key's
hashCodeto pick a bucket, and its keys come out in no promised order. - Learn it in 35. HashMap and HashSet: finding things fast and 43. Inside ArrayList and HashMap: build your ownSee also hashCode, TreeMap, Hash collision
- HashSetalso hash set
- A set that adds, finds and removes values in about the same time however big it grows, using each value's
hashCodeandequals. It keeps no order, and inside it is aHashMapwhose keys are the set's values. - Learn it in 35. HashMap and HashSet: finding things fastSee also Set, HashMap, hashCode
- Heapalso heap memory
- The area of the JVM's memory where objects live. Every
newmakes an object on the heap, and a variable holds a reference that points to it. This heap has nothing to do with the binary heap inside aPriorityQueue. - Learn it in 1. Your first Java program and 15. The this keyword and object referencesSee also Call stack, Reference, Garbage collection
- HTTPalso HTTPS, HTTP method, GET, POST, request, response
- The protocol programs use to talk to web servers. A client sends a request with a method (
GETto read,POSTto create,PUTto replace,DELETEto remove), a URL, headers and sometimes a body, and the server answers with a status code, headers and a body; HTTPS is the same protocol, encrypted. - Learn it in 71. Talking to the web: HttpClient and JSON and 72. Your first web API with Spring BootSee also Status code, HttpClient, REST
- HttpClientalso java.net.http, HttpRequest, HttpResponse
- The JDK's built-in class for calling web servers, in
java.net.httpsince Java 11. You build anHttpRequest, send it withclient.send(request, HttpResponse.BodyHandlers.ofString()), and read the status code and body from theHttpResponseyou get back. - Learn it in 71. Talking to the web: HttpClient and JSONSee also HTTP, JSON, API
I18
- IDEalso integrated development environment, IntelliJ IDEA, VS Code, Eclipse
- An integrated development environment: an editor built for writing code, such as IntelliJ IDEA, VS Code or Eclipse. It marks errors as you type, completes names, renames safely, runs your program and has a debugger built in.
- Learn it in 57. Annotations, docs, stack traces, and the IDESee also Debugging, Javadoc, Refactoring
- if statementalso if, else, else if, if-else
- Runs a block only when its condition is
true, with an optionalelsefor when it is not. In a chain ofif,else ifandelse, only the first branch whose condition is true runs. - Learn it in 4. Making decisions: if, else and switchSee also boolean, switch statement, Ternary operator
- IllegalArgumentException
- The standard unchecked exception for “I cannot accept this value”, thrown by a method that checks its arguments:
throw new IllegalArgumentException("age must not be negative");. Throwing it at the start of a method stops bad data before it does any harm. - Learn it in 22. Testing your code with JUnit, 48. Exception handling and 80. Event handling and GUI programsSee also throw, Unchecked exception, NumberFormatException
- Immutablealso immutability, immutable object
- Unable to change after it is made.
String,LocalDateandBigDecimalobjects are immutable, so a method such asplusDaysreturns a new object, and immutable objects are safe to share between methods and threads. - Learn it in 20. Strings, StringBuilder, StringBuffer, 29. Records: data classes in one line and 31. Designing classes wellSee also String, Record, final
- importalso import statement, static import, java.lang
- A line at the top of a file that lets you use a class from another package by its short name:
import java.util.ArrayList;. Classes injava.lang, such asStringandMath, need no import, andimport staticbrings in static members, such as JUnit'sassertEquals. - Learn it in 44. Packages and imports and 7. ArrayList: a list that can growQuick guide: Java import Statement, Explained with ExamplesSee also Package, Classpath
- Increment and decrementalso ++, --, i++, prefix, postfix
x++adds one toxandx--takes one away. Inside a bigger expression, the postfix formx++gives the old value and the prefix form++xthe new one, soint a = 5; int b = a++;leavesbat 5 andaat 6.- Learn it in 3. Operators, expressions, and casting and 5. Loops: for, while, do-whileSee also Compound assignment, for loop
- Inheritancealso extends, subclass, superclass, parent class, child class, is-a
- Building a new class on top of an existing one with
extends: inclass Dog extends Animal, the subclassDoggets the fields and methods of its superclassAnimaland adds its own. A class extends exactly one other class,Objectif it names none, and inheritance fits only when “a Dog is an Animal” is true. - Learn it in 16. Inheritance, 17. Method overriding and super and 25. Interface vs abstract classSee also Overriding, Composition, Abstract class
- Insertion sort
- Sorting the way you sort playing cards in your hand: take the next element and slide it left into place among those already sorted. It is O(n²) in general but close to O(n) on data that is nearly sorted, and it is stable.
- Learn it in 42. Searching and sorting algorithmsSee also Selection sort, Merge sort, Stable sort
- instanceofalso instanceof pattern, type check
- An operator that asks whether an object belongs to a class or interface:
shape instanceof Circleistruefor any circle andfalsefornull. Written with a name, as inif (shape instanceof Circle c), it also hands you the object as aCirclecalledc. - Learn it in 18. Polymorphism and 30. Sealed types and pattern matchingSee also Upcasting and downcasting, Pattern matching, ClassCastException
- intalso integer, whole number
- The primitive type for whole numbers from -2,147,483,648 to 2,147,483,647. Going past either end wraps around without any error, so bigger values need a
long, which reaches about 9.2 quintillion. - Learn it in 2. Variables, types, and input/output and 3. Operators, expressions, and castingSee also Primitive type, Integer overflow, Integer division
- Integer cache
- Java keeps ready-made
Integerobjects for the values -128 to 127 and reuses them when it boxes those numbers. So==on two boxedIntegers istruefor 127 butfalsefor 128, which is why wrapper values are compared withequals. - Learn it in 32. Wrapper classes and autoboxingSee also Autoboxing, Wrapper class, equals
- Integer divisionalso int division, truncation
- Dividing one whole number by another in Java gives a whole number, with the fraction thrown away:
7 / 2is3. Make either side adouble, as in7 / 2.0or(double) a / b, to get3.5. - Learn it in 3. Operators, expressions, and castingSee also Remainder operator, Casting, int
- Integer overflowalso overflow, wraparound
- What happens when a whole-number result is too big for its type: it wraps around to the other end without any error.
Integer.MAX_VALUE + 1is-2147483648; uselong,Math.addExact(which throws instead) orBigIntegerwhen numbers can grow that large. - Learn it in 3. Operators, expressions, and casting, 37. Comparable, Comparator and sorting and 51. Money and exact numbers: BigDecimal and BigIntegerSee also int, BigInteger
- Interfacealso implements, contract, default method
- A named set of methods that a class promises to provide, with no instance fields. A class
implementsas many interfaces as it likes butextendsonly one class, and an interface can also supply finisheddefaultmethods. - Learn it in 24. Interfaces, 25. Interface vs abstract class and 31. Designing classes wellSee also Abstract class, Polymorphism, Functional interface
- Intermediate operationalso lazy evaluation, laziness, sorted, distinct
- A stream step that returns another stream, such as
filter,map,sorted,distinctandlimit. Intermediate operations are lazy: they only describe the work, and nothing happens until a terminal operation pulls elements through one at a time. - Learn it in 53. Streams: processing collections step by step and 54. Collectors and stream recipesSee also Terminal operation, Stream, filter
- IntStreamalso LongStream, DoubleStream, primitive stream, IntStream.range
- A stream of plain
intvalues with number methods built in:IntStream.rangeClosed(1, 5).sum()is 15, andsum(),average()andmax()need no boxing.LongStreamandDoubleStreamdo the same forlonganddouble. - Learn it in 53. Streams: processing collections step by stepSee also Stream, Autoboxing, map (streams)
- IOExceptionalso FileNotFoundException, NoSuchFileException
- The checked exception for input or output that failed, such as a file that is missing, locked or unreadable. Its subclasses name the exact problem, for example
FileNotFoundExceptionandNoSuchFileException. - Learn it in 46. Reading files, 48. Exception handling and 49. Path and Files: modern file handlingSee also Checked exception, BufferedReader, Files
- Iteratoralso hasNext, Iterable
- An object that walks a collection one element at a time with
hasNext()andnext(). The for-each loop uses one behind the scenes, and the iterator's ownremove()is the safe way to delete elements while you walk. - Learn it in 34. The Collections FrameworkSee also for-each loop, ConcurrentModificationException
J17
- JAR filealso JAR, .jar, Java archive
- A Java archive: one zip file holding compiled
.classfiles and resources, so a program or library travels as a single file. The JDK'sjartool makes them, and the libraries your project depends on arrive as JARs. - Learn it in 67. Packaging and shipping a Java app and 65. Maven and Gradle: building real projectsSee also Executable JAR, Classpath, Dependency
- Javadocalso doc comment, /**, API documentation
- Documentation comments that start with
/**, written just above a class or method to describe it. Thejavadoctool turns them into the web pages you read for the standard library, and your IDE shows them when you hover over a name. - Learn it in 57. Annotations, docs, stack traces, and the IDESee also IDE, Annotation
- JavaFXalso OpenJFX, GUI, graphical user interface
- Java's modern toolkit for programs with a graphical user interface (GUI): windows, buttons, forms and charts. Since Java 11 it is no longer part of the JDK download, so you get the JavaFX SDK separately and add its modules when you compile and run.
- Learn it in 76. JavaFX overview, features, and architecture and 77. Creating and running a JavaFX applicationQuick guide: Fix: JavaFX Runtime Components Are MissingSee also Stage, Scene graph, Swing
- JavaFX Application Threadalso FX thread, UI thread, Platform.runLater, Task
- The single thread that runs every JavaFX event handler and is the only one allowed to change what is on screen. Slow work such as a database query belongs in a
Taskon a background thread, andPlatform.runLater(...)hands an update back to this thread. - Learn it in 76. JavaFX overview, features, and architecture and 81. Database support of a JavaFX applicationSee also Event handler, Thread, Event-driven programming
- JDBCalso Java Database Connectivity, java.sql, SQLException
- Java Database Connectivity, the standard API in
java.sqlfor talking to a relational database through interfaces such asConnection,PreparedStatementandResultSet. A driver for the particular database does the real work, and every failure arrives as a checkedSQLException. - Learn it in 69. SQL, MySQL, and connecting with JDBC, 70. Creating and executing queries and 81. Database support of a JavaFX applicationSee also JDBC driver, Connection, PreparedStatement
- JDBC driveralso driver, Connector/J
- The library, a JAR file, that makes JDBC work for one database, such as MySQL Connector/J. It must be on the classpath when the program runs, or connecting fails with
No suitable driver found. - Learn it in 69. SQL, MySQL, and connecting with JDBCSee also JDBC, Classpath, Connection
- JDKalso Java Development Kit
- The Java Development Kit, the one thing you install to write Java. It holds the JVM and the standard library, plus tools such as the compiler
javac, thejavalauncher that runs programs, andjshell. - Learn it in 1. Your first Java programQuick guide: JDK vs JRE vs JVM: What Each One DoesSee also JRE, JVM, Compiler
- JIT compileralso just-in-time compiler, JIT
- A part of the JVM that spots the bytecode a program runs most often and translates it into the processor's own machine code while the program runs. It is why a Java program usually gets faster after it has been running for a moment.
- Learn it in 1. Your first Java programSee also JVM, Bytecode
- jlink
- A JDK tool that builds a cut-down Java runtime holding only the modules your app uses. The result can run your app on a machine with no JDK installed, and it is often much smaller than a full JDK.
- Learn it in 67. Packaging and shipping a Java appSee also Module, jpackage
- JPAalso Jakarta Persistence, Hibernate, ORM, H2
- Jakarta Persistence, the standard API for saving objects as database rows and loading them back, with the SQL written for you; in Spring Boot, the Hibernate library does this work. During development it often runs against H2, a small database that lives in the app's memory.
- Learn it in 73. Saving data with Spring Data JPASee also @Entity, JpaRepository, JDBC
- jpackage
- A JDK tool that turns a Java app and its runtime into a normal installer: an
.msior.exeon Windows, a.dmgor.pkgon macOS, and a.debor.rpmon Linux. People install it like any other program, without installing Java first. - Learn it in 67. Packaging and shipping a Java appSee also jlink, Executable JAR
- JpaRepositoryalso repository, Spring Data repository, CrudRepository
- A Spring Data interface you extend, as in
interface TaskRepository extends JpaRepository<Task, Long>, and Spring writes the class behind it for you. You getsave,findById,findAllanddeleteByIdfor free, and a method named likefindByDone(boolean done)becomes a query. - Learn it in 73. Saving data with Spring Data JPASee also JPA, @Entity, CRUD
- JREalso Java Runtime Environment
- The Java Runtime Environment: the JVM plus the standard library, enough to run a compiled program but with no compiler. The JDK contains everything the JRE has, so to learn Java you install the JDK.
- Learn it in 1. Your first Java programQuick guide: JDK vs JRE vs JVM: What Each One DoesSee also JDK, JVM
- JShellalso REPL
- A tool in the JDK that runs Java one line at a time and shows each result straight away, with no class and no
mainmethod. Typejshellin a terminal to start it and/exitto leave; it is handy for trying out a method before you use it in a program. - Learn it in 1. Your first Java program and 2. Variables, types, and input/outputSee also JDK, Compact source file
- JSONalso JavaScript Object Notation, Jackson, ObjectMapper, DTO
- A text format for data built from objects in braces, arrays in brackets, strings, numbers,
true,falseandnull:{"name": "Ada", "age": 36}. The Jackson library'sObjectMapperturns JSON into Java objects and back, often into records whose only job is to carry data, called DTOs (data transfer objects). - Learn it in 71. Talking to the web: HttpClient and JSON and 72. Your first web API with Spring BootSee also Record, HttpClient, REST
- JUnitalso JUnit 5, JUnit 6, JUnit Jupiter, @BeforeEach
- The most widely used testing framework for Java: you mark test methods with
@Test, and JUnit runs each one on a fresh object of the test class and reports which passed and which failed. A method marked@BeforeEachruns before every test to rebuild the starting point, and JUnit 5 and JUnit 6 share these annotations. - Learn it in 22. Testing your code with JUnitSee also Unit test, @Test, Assertion
- JVMalso Java Virtual Machine
- The program that runs Java bytecode. Every operating system has its own JVM, which is why the same
.classfile runs on Windows, macOS and Linux. - Learn it in 1. Your first Java programQuick guide: JDK vs JRE vs JVM: What Each One DoesSee also Bytecode, Compiler, JDK
L15
- Lambda expressionalso lambda, arrow function, anonymous function, ->, effectively final
- A short way to write a piece of behavior as a value:
x -> x * 2takesxand returns double it. A lambda can go wherever a functional interface is expected, as inlist.removeIf(s -> s.isEmpty()), and it may only use local variables that are never reassigned, which Java calls effectively final. - Learn it in 28. Enums, lambdas, and functional interfaces, 53. Streams: processing collections step by step and 80. Event handling and GUI programsQuick guide: Anonymous Inner Class in Java, with ExamplesSee also Functional interface, Method reference, Stream
- Layout panealso Pane, VBox, HBox, StackPane, GridPane, BorderPane
- A JavaFX node that positions its children for you and rearranges them when the window changes size.
VBoxstacks them top to bottom,HBoxleft to right,StackPaneon top of each other, andGridPanein rows and columns, which suits forms. - Learn it in 78. Nodes, controls, and layout panes and 79. Form creation using JavaFXSee also Node (JavaFX), Control, Scene graph
- lengthalso length(), size()
- How many elements something holds, asked three different ways: an array has the field
a.length, a String has the methods.length(), and a collection has the methodlist.size(). - Learn it in 6. Arrays, one dimension, 20. Strings, StringBuilder, StringBuffer and 7. ArrayList: a list that can growSee also Array, String, ArrayList
- Linked listalso LinkedList, node, head, singly linked list, doubly linked list
- A list built from nodes, where each node holds a value and a reference to the next node, and in a doubly linked list to the previous one too. Adding or removing at the front is fast, but reaching index
imeans walkinginodes from the head. Java'sLinkedListis doubly linked, yetArrayListis faster for most jobs, even whereLinkedListlooks cheaper on paper. - Learn it in 39. Linked lists: nodes and references and 41. How fast is it? Big-O in plain wordsSee also List, ArrayList, Deque
- LinkedHashMapalso LinkedHashSet, insertion order
- A
HashMapthat also remembers the order in which keys were first put in, and hands them back in that order.LinkedHashSetdoes the same for a set. - Learn it in 35. HashMap and HashSet: finding things fastSee also HashMap, TreeMap, Set
- Listalso List interface
- The collection interface for elements kept in order and reached by index, with duplicates allowed.
ArrayListandLinkedListimplement it, so you can declareList<String> names = new ArrayList<>();and swap the class later. - Learn it in 7. ArrayList: a list that can grow and 34. The Collections FrameworkSee also ArrayList, Linked list, Collections Framework
- Literalalso integer literal, string literal
- A value written straight into the code, such as
42,3.5,'x',"hello",trueornull. A whole-number literal is anintunless it ends inL, as in5000000000L, which makes it along. - Learn it in 2. Variables, types, and input/outputSee also Primitive type, String, Escape sequence
- Load factor
- How full a hash table may get before it grows, as entries divided by buckets. A
HashMapstarts with 16 buckets and a load factor of 0.75, so the 13th entry makes it double to 32 buckets and move every entry to its new bucket. - Learn it in 35. HashMap and HashSet: finding things fast and 43. Inside ArrayList and HashMap: build your ownSee also Hash collision, HashMap, Dynamic array
- LocalDatealso java.time, LocalTime, LocalDateTime, DayOfWeek
- A date with no time of day and no time zone, such as
LocalDate.of(2025, 3, 14), which prints as2025-03-14. It never changes:plusDays(30)returns a new date.LocalTimeholds a time of day,LocalDateTimeholds both, andgetDayOfWeek()gives aDayOfWeeksuch asFRIDAY. - Learn it in 50. Dates and times with java.timeSee also Period, DateTimeFormatter, Immutable
- Log levelalso levels, ERROR, WARN, INFO, DEBUG, TRACE
- How serious a log message is. SLF4J's levels, from most to least serious, are
ERROR,WARN,INFO,DEBUGandTRACE, and setting a logger toINFOhides theDEBUGandTRACElines without touching the code. - Learn it in 66. Logging instead of printlnSee also Logging, SLF4J
- Logback
- A logging library that does the writing behind SLF4J: it decides where log lines go, such as the console or a file, how each line looks and which levels to keep, usually from a
logback.xmlfile. Spring Boot uses it by default. - Learn it in 66. Logging instead of printlnSee also SLF4J, Logging, Log level
- Loggingalso logger, log, java.util.logging, System.Logger
- Recording what a running program does through a logger instead of
println, usually with a level, a time and the class name on every line. The JDK hasjava.util.loggingandSystem.Loggerbuilt in, and most projects use SLF4J with Logback. - Learn it in 66. Logging instead of printlnSee also Log level, SLF4J, Logback
- Logic erroralso bug, logic bug
- A mistake that lets the program compile and run but gives the wrong answer, such as
<where you meant<=. Java cannot spot it for you: you find it by knowing what the right result should be, and tests catch it early. - Learn it in 9. Reading errors and debugging and 22. Testing your code with JUnitSee also Debugging, Unit test, Compile error
- Logical operatoralso &&, ||, !, and, or, not, short-circuit
&&(and),||(or) and!(not) combinebooleanvalues into one.&&and||short-circuit: they skip the right-hand side when the left side already decides the answer, sos != null && s.isEmpty()never calls a method onnull.- Learn it in 3. Operators, expressions, and casting and 4. Making decisions: if, else and switchSee also boolean, Operator precedence, if statement
- LTSalso long-term support
- Long-term support: a Java release that gets fixes and security updates for years. Java 8, 11, 17, 21 and 25 are LTS releases, and this course uses Java 25.
- Learn it in 1. Your first Java programSee also JDK
M11
- main methodalso main, public static void main, entry point
- The method where a program starts:
public static void main(String[] args). Thejavacommand looks for it in the class you run and calls it first, and since Java 25 a plainvoid main()works too. - Learn it in 1. Your first Java program and 26. The static and final keywordsSee also Method, static, Compact source file
- Mapalso Map interface, key-value pairs, Map.Entry, entrySet
- The interface for looking up a value by its key, where each key appears at most once:
put("kiwi", 3)stores a pair andget("kiwi")finds3.entrySet()hands back each pair as aMap.EntrywithgetKey()andgetValue(). - Learn it in 34. The Collections Framework and 35. HashMap and HashSet: finding things fastSee also HashMap, TreeMap, LinkedHashMap
- map (streams)also Stream.map, mapToInt
- The stream operation that turns each element into a new value:
names.stream().map(String::length)turns names into their lengths. It has nothing to do with theMapcollection, andmapToIntdoes the same job but gives anIntStream. - Learn it in 53. Streams: processing collections step by stepSee also filter, flatMap, IntStream
- Mavenalso mvn, mvnw, Maven Wrapper
- A build tool that compiles a project, downloads its libraries, runs its tests and packages it, all from the description in
pom.xml. It expects code insrc/main/javaand tests insrc/test/java, and the wrapper script./mvnwruns the right Maven version without installing it first. - Learn it in 65. Maven and Gradle: building real projectsSee also pom.xml, Gradle, Dependency
- Memoizationalso caching, memo
- Storing each answer a method works out, often in a
HashMap, so the same question is never computed twice. It turns a recursive Fibonacci that would make billions of calls forfib(50)into one that makes about a hundred. - Learn it in 40. Recursion: methods that call themselvesSee also Recursion, HashMap
- Mergealso git merge, merge conflict, conflict
- Bringing one branch's commits into another:
git merge login, run while onmain, adds the login work tomain. When both branches changed the same lines, Git stops with a merge conflict and marks the spot between<<<<<<<and>>>>>>>, and you edit the file to the right result before committing. - Learn it in 64. Git and GitHub: saving your workSee also Branch, Pull request, Commit
- Merge sortalso divide and conquer
- Sorting by splitting the data in half, sorting each half the same way, and merging the two sorted halves into one. This split, solve and combine approach is called divide and conquer; merge sort always takes O(n log n) steps, is stable, and needs extra memory for merging.
- Learn it in 42. Searching and sorting algorithmsSee also O(n log n), Stable sort, Recursion
- Methodalso function, instance method
- A named block of code that belongs to a class, with a return type, a name, parameters and a body:
int area() { return width * height; }. Java has no free-standing functions; every method lives in a class. - Learn it in 12. Methods: parameters and return valuesSee also Parameter, Return value, Overloading
- Method referencealso ::
- A lambda that only calls an existing method, written with
::.String::lengthmeanss -> s.length(), andSystem.out::printlnmeansx -> System.out.println(x). - Learn it in 28. Enums, lambdas, and functional interfaces and 53. Streams: processing collections step by stepSee also Lambda expression, Functional interface
- Modulealso module-info.java, JPMS, Java Platform Module System
- A named group of packages with a
module-info.javafile that lists the modules it needs (requires) and the packages it lets others use (exports). The JDK itself has been split into modules, such asjava.baseandjava.sql, since Java 9. - Learn it in 67. Packaging and shipping a Java app and 77. Creating and running a JavaFX applicationSee also Module path, jlink, Package
- Module pathalso --module-path, --add-modules
- Where the JVM looks for modules, the module system's version of the classpath, set with
--module-path.--add-modulesnames the modules to load, which is how a JavaFX program is compiled and run from the command line. - Learn it in 77. Creating and running a JavaFX application and 67. Packaging and shipping a Java appSee also Module, Classpath, JavaFX
N5
- Nested classalso inner class, static nested class, anonymous class
- A class declared inside another class. A
staticnested class is an ordinary class kept inside for tidiness, an inner class (nostatic) belongs to an object of the outer class, and an anonymous class is declared and created in one expression, as innew Comparator<String>() { ... }. - Learn it in 27. Inner classes and OOP consolidation and 80. Event handling and GUI programsQuick guide: Anonymous Inner Class in Java, with ExamplesSee also Lambda expression, static, Interface
- Node (JavaFX)also Node, Parent, Group, Region
- The base class of everything that can appear in a JavaFX scene, from a
Buttonto aVBox. A node that holds other nodes is aParent, such as aGroupor a layout pane, and a scene's root node must be aParent. - Learn it in 78. Nodes, controls, and layout panes and 76. JavaFX overview, features, and architectureSee also Scene graph, Layout pane, Control
- nullalso null reference
- The value of a reference variable that points at no object. Calling a method or reading a field through
nullthrows aNullPointerException, and primitives such asintcan never benull. - Learn it in 2. Variables, types, and input/output, 15. The this keyword and object references and 55. Optional: a value that might be missingSee also NullPointerException, Reference, Optional
- NullPointerExceptionalso NPE, helpful NullPointerException
- The exception thrown when code uses a
nullreference as if it pointed at an object, for example callingname.length()whilenameisnull. Its message names what was null, as inCannot invoke "String.length()" because "this.name" is null. - Learn it in 15. The this keyword and object references, 9. Reading errors and debugging and 55. Optional: a value that might be missingSee also null, Optional, Stack trace
- NumberFormatException
- The exception thrown when text cannot be read as a number, for example by
Integer.parseInt("12a"). Its message quotes the bad text,For input string: "12a", and it is unchecked, a kind ofIllegalArgumentException. - Learn it in 9. Reading errors and debugging, 32. Wrapper classes and autoboxing and 80. Event handling and GUI programsSee also parseInt, IllegalArgumentException, try-catch
O12
- O(1)also constant time
- Constant time: the work stays the same however big the input gets. Reading
a[i]from an array is O(1), and so isgeton aHashMapon average. - Learn it in 41. How fast is it? Big-O in plain wordsSee also Big-O, HashMap, O(n)
- O(log n)also logarithmic time
- Logarithmic time: each step throws away a fixed share of what is left, usually half. Binary search over a million sorted items needs at most 20 looks, and finding a key in a
TreeMapis O(log n) too. - Learn it in 41. How fast is it? Big-O in plain words and 42. Searching and sorting algorithmsSee also Big-O, Binary search, TreeMap
- O(n log n)also linearithmic time
- The growth rate of the best general sorting algorithms, such as merge sort and the sorts behind
Arrays.sortandList.sort. Sorting a million items takes about 20 million steps, where an O(n²) sort would need around a trillion. - Learn it in 41. How fast is it? Big-O in plain words and 42. Searching and sorting algorithmsSee also Merge sort, Big-O, O(n^2)
- O(n)also linear time
- Linear time: the work grows in step with the input, so twice the items take about twice as long. Looking at every element once, as linear search and
ArrayList.containsdo, is O(n). - Learn it in 41. How fast is it? Big-O in plain wordsSee also Big-O, Binary search, O(1)
- O(n^2)also O(n²), quadratic time, O(n squared)
- Quadratic time: twice the input means about four times the work. Two nested loops over the same data, such as comparing every pair of items, are O(n²), and a million items would mean about a trillion steps.
- Learn it in 41. How fast is it? Big-O in plain words and 42. Searching and sorting algorithmsSee also Big-O, Selection sort, Two-dimensional array
- Objectalso instance, new, instantiate
- One thing built from a class with
new, such asnew Dog("Rex"), with its own copy of every field. Eachnewmakes a separate object on the heap and hands back a reference to it, and the object is called an instance of its class. - Learn it in 10. Why objects? Class vs object and 11. Creating classes and objectsSee also Class, Reference, Constructor
- Object-oriented programmingalso OOP, abstraction, four pillars
- Building a program from objects that keep data and the methods that work on it together. Its four big ideas are encapsulation, inheritance, polymorphism and abstraction, which means showing what something does while hiding how it does it.
- Learn it in 10. Why objects? Class vs object and 27. Inner classes and OOP consolidationSee also Class, Object, Encapsulation
- Operator precedencealso precedence, order of operations
- The rules for which operator goes first when an expression has several.
*,/and%come before+and-, so2 + 3 * 4is14, and parentheses change the order:(2 + 3) * 4is20. - Learn it in 3. Operators, expressions, and castingSee also Logical operator, Integer division, Remainder operator
- Optionalalso Optional.of, Optional.ofNullable, Optional.empty, orElse, orElseThrow
- A box that holds one value or nothing, used as a return type to say “there may be no result” instead of returning
null. Get the value out withorElse(fallback),orElseThrow()orifPresent(...), and usemapto change it only if it is there. - Learn it in 55. Optional: a value that might be missing and 53. Streams: processing collections step by stepSee also null, NullPointerException, Stream
- Overloadingalso method overloading, constructor overloading, method signature
- Writing several methods or constructors with the same name but different parameter lists, such as
add(int a, int b)andadd(double a, double b). The compiler picks the version whose parameters match the arguments, and a different return type alone is not enough. - Learn it in 12. Methods: parameters and return values and 13. ConstructorsQuick guide: Method Overloading vs Overriding in JavaSee also Method, Overriding, Constructor
- @Overridealso Override annotation
- An annotation on a method saying it is meant to override one from a parent class or interface. If there is no such method, for example because of a typo in the name, the compiler reports an error instead of quietly adding a new method.
- Learn it in 17. Method overriding and super and 57. Annotations, docs, stack traces, and the IDESee also Overriding, Annotation
- Overridingalso method overriding, override
- A subclass replacing an inherited method with its own version that has the same name and parameters. When the method is called, the object's real class decides which version runs.
- Learn it in 17. Method overriding and super and 18. PolymorphismQuick guide: Method Overloading vs Overriding in JavaSee also @Override, Overloading, Dynamic dispatch
P17
- Packagealso package declaration, fully qualified name, standard library
- A named group of related classes, declared on a file's first line with
package com.shop.billing;and kept in matching folders. A class's full name includes its package, as injava.util.ArrayList, and the JDK's standard library is organized the same way, into packages such asjava.utilandjava.time. - Learn it in 44. Packages and importsQuick guide: Java import Statement, Explained with ExamplesSee also import, Classpath, Access modifier
- Parameteralso argument
- A variable in a method's declaration that receives a value when the method is called. In
void greet(String name),nameis the parameter, and in the callgreet("Ada"),"Ada"is the argument that fills it. - Learn it in 12. Methods: parameters and return valuesSee also Method, Pass by value, Return value
- Parameterized testalso @ParameterizedTest, @ValueSource, @CsvSource
- One JUnit test method that runs once for each row of inputs you list: with
@ParameterizedTestand@CsvSource({"1, 1", "2, 4", "3, 9"}), a test of squaring runs three times. It replaces copies of a test that differ only in their values. - Learn it in 22. Testing your code with JUnitSee also @Test, Edge case
- parseIntalso Integer.parseInt, Double.parseDouble, valueOf, string to int
- Turns text into a number:
Integer.parseInt("42")gives theint42, andDouble.parseDoubledoes the same for decimals. Text that is not a number, such as"4x"or an empty string, throws aNumberFormatException. - Learn it in 9. Reading errors and debugging, 32. Wrapper classes and autoboxing and 45. Scanner and console applicationsSee also NumberFormatException, Wrapper class, Scanner
- Pass by valuealso pass by reference, call by value
- Java always copies an argument's value into the parameter. A method that gets an
intgets a copy of the number, so the caller's variable cannot change; one that gets an object gets a copy of the reference, so it can change the object but cannot make the caller's variable point somewhere else. - Learn it in 12. Methods: parameters and return valuesSee also Parameter, Reference
- Pathalso Path.of, Paths.get, relative path, absolute path, working directory
- An object naming a file or folder location, made with
Path.of("data", "scores.txt"). Making one never touches the disk, so it can name a file that does not exist yet, and a relative path is looked up from the working directory, the folder the program was started in. - Learn it in 49. Path and Files: modern file handling and 47. Writing filesQuick guide: How to Read a File in Java, with ExamplesSee also Files, IOException
- Pattern and Matcheralso Pattern, Matcher, Pattern.compile, find
- The two
java.util.regexclasses for working with a regex.Pattern.compile("\\d+")turns the regex into a reusablePattern, andpattern.matcher(text)gives aMatcherfor one text:find()moves to the next match,group()returns the text that matched, andmatches()asks whether the whole text fits. - Learn it in 52. Regular expressions: patterns in textSee also Regular expression, Capturing group
- Pattern matchingalso type pattern, record pattern, guard, when, switch pattern
- Testing a value's shape and naming its parts in one step.
if (obj instanceof String s)checks the type and gives yous, and a record pattern such asPoint(int x, int y)takes a record apart into its components. In aswitch, a guard adds a condition:case Circle c when c.radius() > 10 ->. - Learn it in 30. Sealed types and pattern matching and 56. Modern Java syntax: var, text blocks and moreSee also instanceof, Record, Switch expression
- Periodalso Period.between
- An amount of time in years, months and days, such as
Period.ofMonths(3).Period.between(start, end)splits the gap between two dates into those parts, so itsgetDays()is only the days left over after the whole months, not the total. - Learn it in 50. Dates and times with java.timeSee also Duration, ChronoUnit, LocalDate
- Polymorphismalso many forms
- One piece of code working with many kinds of object through a type they share. A loop over a
List<Shape>can callarea()on circles and squares alike, and each object runs its own version. - Learn it in 18. Polymorphism and 24. InterfacesSee also Dynamic dispatch, Interface, Upcasting and downcasting
- pom.xmlalso POM, groupId, artifactId
- The file that describes a Maven project: its coordinates (
groupId,artifactIdandversion), the Java version and the dependencies it needs. Maven reads it to know what to download and how to build. - Learn it in 65. Maven and Gradle: building real projectsSee also Maven, Dependency
- PreparedStatementalso Statement, placeholder, executeQuery, executeUpdate
- A JDBC statement whose SQL has
?placeholders that you fill with typed values:ps.setString(1, name)fills the first.executeQuery()runs aSELECTand returns aResultSet, andexecuteUpdate()runs other SQL and returns how many rows changed. The values travel as data, never as SQL, which blocks SQL injection. - Learn it in 70. Creating and executing queries and 81. Database support of a JavaFX applicationSee also SQL injection, ResultSet, Connection
- Primitive typealso primitive
- One of Java's eight built-in kinds of simple value:
byte,short,int,long,float,double,charandboolean. A primitive variable holds the value itself, not a reference to an object. - Learn it in 2. Variables, types, and input/outputSee also Wrapper class, Autoboxing, int
- printlnalso System.out.println, print, printf, System.out
- Prints a value and then moves to a new line:
System.out.println("Hi").printstays on the same line, andprintffills a template with values, soSystem.out.printf("%.2f%n", 3.14159)prints3.14. - Learn it in 1. Your first Java program, 2. Variables, types, and input/output and 51. Money and exact numbers: BigDecimal and BigIntegerSee also String, main method
- PriorityQueuealso priority queue, binary heap, min-heap
- A queue that always hands out its smallest element first, by natural order or by a
Comparatoryou give it. Inside it keeps a binary heap, so printing it shows the elements in heap order, not sorted order. - Learn it in 38. Stacks, queues and dequesSee also Queue, Comparator, Comparable
- Pull requestalso PR, merge request
- A request on GitHub to merge one branch into another, where teammates read the changes, comment and see automated test results before anyone merges. It is where code review usually happens.
- Learn it in 64. Git and GitHub: saving your work and 74. Shipping it: Docker and GitHub ActionsSee also Branch, Merge, Code review
- Pushalso git push, git pull, remote, origin
- Sending your local commits to a remote repository, such as one on GitHub:
git push origin main. The opposite direction,git pull, brings the remote's new commits into your branch, andoriginis the usual name of the remote you cloned from. - Learn it in 64. Git and GitHub: saving your workSee also Repository, GitHub, Commit
Q3
- Quantifieralso *, +, {n,m}, greedy, reluctant
- A regex symbol that says how many times the part before it may repeat:
*zero or more,+one or more,?zero or one, and{2,4}two to four times. Quantifiers are greedy and match as much as they can, unless a?follows them, as in.*?. - Learn it in 52. Regular expressions: patterns in textSee also Regular expression, Character class
- Quantum Toolkitalso Prism, Glass, JavaFX architecture
- The layer of JavaFX that ties the scene graph to the engines below it: Prism, which draws every frame, using the graphics card when it can, and Glass, which creates the native windows and passes mouse and keyboard input up as events. Your own code talks only to the JavaFX API above them.
- Learn it in 76. JavaFX overview, features, and architectureSee also Scene graph, JavaFX, Event-driven programming
- Queuealso FIFO, first in, first out, offer, poll
- A collection that hands out elements first in, first out, like a line at a shop:
offeradds at the back andpolltakes from the front.ArrayDequeis the usual class for a plain queue. - Learn it in 34. The Collections Framework and 38. Stacks, queues and dequesSee also Stack, Deque, PriorityQueue
R17
- Race conditionalso data race, shared state, atomic
- A bug where the result depends on the exact timing of threads that share data. Two threads running
count++can both read 5 and both write 6, losing an update, becausecount++is three steps (read, add, write) instead of one atomic step that no thread can interrupt. - Learn it in 60. Thread creation and synchronizationSee also synchronized, AtomicInteger, Thread safety
- Recordalso record class, record component, data class
- A class for carrying a fixed group of values, declared in one line:
record Point(int x, int y) {}. Java writes the constructor, the accessorsx()andy(), andequals,hashCodeandtoStringfrom those components, and the fields are final. - Learn it in 29. Records: data classes in one line and 30. Sealed types and pattern matchingSee also Compact constructor, Immutable, Pattern matching
- Recursionalso recursive method, recursive case
- A method solving a problem by calling itself on a smaller version of the same problem.
factorial(n)returnsn * factorial(n - 1), and a base case such asn == 0stops the calls. - Learn it in 40. Recursion: methods that call themselvesSee also Base case, Call stack, StackOverflowError
- reducealso Stream.reduce, fold
- The stream operation that combines all elements into one value from a starting value and a rule:
nums.stream().reduce(0, Integer::sum)adds them up. Ready-made operations such ascount(),max(...)and anIntStream'ssum()cover the common cases. - Learn it in 53. Streams: processing collections step by stepSee also Terminal operation, Stream, IntStream
- ReentrantLockalso Lock, lock(), unlock(), tryLock
- A lock object that does the job of
synchronizedwith more control, such astryLock()to give up instead of waiting forever. Always callunlock()in afinallyblock, so the lock is released even when an exception is thrown. - Learn it in 63. Safe sharing: atomics, locks and concurrent collectionsSee also synchronized, Deadlock, finally
- Refactoringalso refactor
- Changing the structure of code, such as renaming, splitting a long method or removing repeated code, without changing what it does. Tests make refactoring safe, because they show at once if the behavior changed.
- Learn it in 22. Testing your code with JUnitSee also Test-driven development, Unit test, IDE
- Referencealso object reference, pointer, address, aliasing
- What a variable of a class type actually holds: the address of an object, not the object itself.
Dog b = a;copies the reference, so both names reach the same dog, and a change made through one shows through the other. - Learn it in 11. Creating classes and objects and 15. The this keyword and object referencesSee also Object, Heap, null
- Regular expressionalso regex, regexp
- A pattern that describes the shape of text, such as
\d{3}-\d{4}for a number like 555-1234.matches,split,replaceAlland thePatternandMatcherclasses all take one, and in Java source every backslash is written twice:"\\d+". - Learn it in 52. Regular expressions: patterns in textSee also Pattern and Matcher, Character class, Quantifier
- Remainder operatoralso %, modulo, mod, modulus
%gives what is left over after whole-number division:17 % 5is2. It tells you whether a number is even (n % 2 == 0), and its result takes the sign of the left-hand number, so-7 % 3is-1.- Learn it in 3. Operators, expressions, and casting and 5. Loops: for, while, do-whileSee also Integer division, Operator precedence
- Repositoryalso repo, git init, git clone
- A project folder that Git tracks, with the full history of every commit stored in a hidden
.gitfolder inside it.git initmakes a new one, andgit clonecopies an existing one, history and all. - Learn it in 64. Git and GitHub: saving your workSee also Git, Commit, Push
- RESTalso RESTful, REST API
- A style of web API where URLs name things, such as
/tasks/42, and HTTP methods say what to do with them:GET /taskslists the tasks andDELETE /tasks/42removes one. Answers usually come back as JSON with a fitting status code. - Learn it in 72. Your first web API with Spring Boot and 75. Capstone: build and ship a small web APISee also HTTP, @RestController, API
- @RestControlleralso controller
- The Spring annotation for a class whose methods answer web requests, with each return value written into the response body, usually as JSON. The methods inside are tied to URLs with annotations such as
@GetMapping. - Learn it in 72. Your first web API with Spring BootSee also @GetMapping, Spring Boot, REST
- ResultSetalso cursor, next(), getString, getInt
- The rows a
SELECTreturns, read one row at a time through a cursor that starts before the first row.while (rs.next())steps onto each row in turn, andrs.getString("name")orrs.getInt("age")reads a column of the current row. - Learn it in 69. SQL, MySQL, and connecting with JDBC and 70. Creating and executing queriesSee also PreparedStatement, SQL, JDBC
- Return valuealso return, return type, void
- The value a method hands back to its caller with
return; its type is written before the method's name. A method declaredvoidreturns nothing, andreturn;on its own just ends it early. - Learn it in 12. Methods: parameters and return valuesSee also Method, Parameter
- RoundingModealso HALF_UP, HALF_EVEN, banker's rounding
- An enum that tells
BigDecimalhow to round.HALF_UProunds 2.5 to 3, the way most people learn at school, whileHALF_EVEN, called banker's rounding, sends a 5 to the nearest even digit, so 2.5 becomes 2 and 3.5 becomes 4. - Learn it in 51. Money and exact numbers: BigDecimal and BigIntegerSee also BigDecimal
- Runnable
- A functional interface with one method,
void run(), that describes a job for a thread to do. You can pass a lambda:new Thread(() -> System.out.println("working")).start();. - Learn it in 59. Introduction to threads and 61. Thread pools, executors and futuresSee also Thread, Future, Functional interface
- Runtime erroralso crash, ArithmeticException
- A failure while the program runs, after it compiled fine, such as
7 / 0, which throwsArithmeticException: / by zero, or an array index past the end. Java reports it by throwing an exception, and if nothing catches it the program stops with a stack trace. - Learn it in 9. Reading errors and debugging and 48. Exception handlingSee also Exception, Stack trace, Compile error
S31
- Scanneralso System.in, nextInt, nextLine, standard input
- A class that reads input piece by piece:
new Scanner(System.in)reads what the user types,nextInt()the next whole number andnextLine()the rest of the line. AfternextInt(), the line break from the Enter key is still waiting, so anextLine()straight after it returns an empty string. - Learn it in 4. Making decisions: if, else and switch and 45. Scanner and console applicationsSee also parseInt, BufferedReader, while loop
- Scene
- The content shown inside a stage, built around one root node:
new Scene(root, 400, 300)makes a scene 400 pixels wide and 300 high. A stage shows one scene at a time, so swapping the scene swaps the whole window's content. - Learn it in 76. JavaFX overview, features, and architecture and 77. Creating and running a JavaFX applicationSee also Stage, Scene graph, Node (JavaFX)
- Scene graphalso root node, branch node, leaf node, node tree
- The tree of nodes that describes everything in a JavaFX window. The root node at the top holds branch nodes, such as layout panes, which hold leaf nodes, such as buttons and text; when the tree changes, JavaFX redraws the window.
- Learn it in 76. JavaFX overview, features, and architecture and 78. Nodes, controls, and layout panesSee also Node (JavaFX), Scene, Layout pane
- Sealed classalso sealed, sealed interface, permits, non-sealed
- A class or interface that names every class allowed to extend it:
sealed interface Shape permits Circle, Square {}. Each permitted class must befinal,sealedornon-sealed, and aswitchover the type that covers them all needs nodefault. - Learn it in 30. Sealed types and pattern matchingSee also Pattern matching, Switch expression, Record
- Selection sort
- Sorting by finding the smallest remaining element and swapping it into the next position, over and over. It always takes O(n²) comparisons and is not stable, so it is for learning how sorting works rather than for real code.
- Learn it in 42. Searching and sorting algorithmsSee also Insertion sort, Merge sort, O(n^2)
- Setalso Set interface
- The collection interface that refuses duplicates: adding a value that is already there changes nothing, and
addreturnsfalse.HashSetis the fast everyday choice,LinkedHashSetkeeps insertion order andTreeSetkeeps the values sorted. - Learn it in 34. The Collections Framework and 35. HashMap and HashSet: finding things fastSee also HashSet, TreeSet, equals
- SLF4Jalso Simple Logging Facade for Java, LoggerFactory, parameterized message, {}
- The Simple Logging Facade for Java: the logging API your code calls, as in
log.info("User {} logged in", name), where each{}is filled from the next argument. A separate library, usually Logback, does the actual writing, so you can swap it without changing your code. - Learn it in 66. Logging instead of println and 72. Your first web API with Spring BootSee also Logback, Logging, Log level
- SOLIDalso single responsibility principle, open/closed principle, Liskov substitution, interface segregation, dependency inversion
- Five design guidelines named by their first letters: single responsibility (each class has one job, so one reason to change), open/closed (add behavior with new code instead of editing old code), Liskov substitution (a subclass keeps every promise of its parent), interface segregation (small, focused interfaces) and dependency inversion (depend on interfaces, not concrete classes).
- Learn it in 31. Designing classes wellSee also Composition, Dependency injection, Interface
- Spring Bootalso Spring, Spring Initializr, application.properties
- A framework for building Java web services on top of Spring: it starts a web server and sets up JSON handling and database access from sensible defaults. You create a project at start.spring.io, the Spring Initializr, and change settings such as
server.port=8081inapplication.properties. - Learn it in 72. Your first web API with Spring Boot, 73. Saving data with Spring Data JPA and 75. Capstone: build and ship a small web APIQuick guide: How to Build a Web Application with Spring BootSee also @RestController, Dependency injection, JPA
- SQLalso Structured Query Language, query
- Structured Query Language, the language for working with relational databases. You describe the result you want, such as
SELECT name FROM students WHERE grade > 80, and the database works out how to find it. - Learn it in 69. SQL, MySQL, and connecting with JDBC and 70. Creating and executing queriesSee also Database, CRUD, SQL injection
- SQL injection
- An attack where text a user types is glued into SQL and runs as part of it: a name such as
x' OR '1'='1can turn a query about one user into a query about every user. Filling?placeholders in aPreparedStatement, instead of joining strings with+, stops it. - Learn it in 70. Creating and executing queriesSee also PreparedStatement, SQL
- Stable sortalso stability, stable
- A sort that keeps elements with equal keys in the order they already had. Sort students by name, then stably by grade, and each grade's students stay in name order;
List.sortand merge sort are stable, selection sort is not. - Learn it in 37. Comparable, Comparator and sorting and 42. Searching and sorting algorithmsSee also Merge sort, Arrays.sort, Comparator
- Stackalso LIFO, last in, first out, push, pop, peek
- A collection where the newest element comes out first, like a pile of plates:
pushadds to the top,poptakes the top off andpeeklooks at it. Use anArrayDequeas a stack; the olderStackclass still works, but its own documentation recommends aDequeinstead. - Learn it in 38. Stacks, queues and dequesSee also Deque, Queue, Call stack
- Stack tracealso traceback, exception trace
- The report Java prints when an exception is not caught: the exception's name and message on the first line, then one
atline per method that was running, newest first. Read down to the firstatline in your own code to find where it broke. - Learn it in 9. Reading errors and debugging, 48. Exception handling and 57. Annotations, docs, stack traces, and the IDESee also Exception, Call stack, Debugging
- StackOverflowError
- The error thrown when the call stack runs out of room, almost always because a recursive method never reaches its base case. It is an
Error, not anException, and its stack trace shows the same method over and over. - Learn it in 40. Recursion: methods that call themselvesSee also Recursion, Base case, Call stack
- Stagealso window, primary stage, StageStyle
- A JavaFX window. The platform hands your
startmethod the primary stage, and you give it a scene withsetScene, a title withsetTitle, and then callshow(). - Learn it in 76. JavaFX overview, features, and architecture and 77. Creating and running a JavaFX applicationSee also Scene, Application (JavaFX)
- Staging areaalso index, git add, staging
- Where you gather the changes that should go into the next commit.
git add Main.javastages that file's current changes, so one commit can hold just the related edits, andgit statusshows what is staged. - Learn it in 64. Git and GitHub: saving your workSee also Commit, Git
- staticalso static field, static method, class variable, utility class
- Marks a field or method that belongs to the class itself instead of to each object. A
staticcounter is one number shared by all the objects, astaticmethod such asMath.max(3, 7)is called on the class name, and a class with only static methods, such asMath, is called a utility class. - Learn it in 26. The static and final keywords and 69. SQL, MySQL, and connecting with JDBCSee also final, main method, Field
- Static typingalso statically typed, dynamic typing, type checking
- Every variable has a type that is fixed in the source code, and the compiler checks every use of it before the program runs. Putting text into an
intvariable is a compile error in Java, while a dynamically typed language such as Python finds that mistake only when the line runs. - Learn it in 2. Variables, types, and input/outputSee also Variable, Compile error, var
- Status codealso HTTP status, 200, 404, 500
- The three-digit number at the start of an HTTP response that says how the request went. Codes in the 200s mean success (
200 OK,201 Created), the 400s mean the request was wrong (400 Bad Request,404 Not Found), and the 500s mean the server failed. - Learn it in 71. Talking to the web: HttpClient and JSON and 72. Your first web API with Spring BootSee also HTTP, REST
- Strategy patternalso strategy
- Putting each way of doing one job in its own object behind a shared interface, so code can switch between them without a chain of
ifs. AComparatorhanded tosortis a strategy for ordering, and a lambda is often the whole strategy. - Learn it in 31. Designing classes wellSee also Comparator, Interface, Factory method
- Streamalso Stream API, java.util.stream, pipeline
- A sequence of values flowing through a pipeline of steps, usually made from a collection with
list.stream(). You describe the result, as innames.stream().filter(n -> n.length() > 3).map(String::toUpperCase).toList(), and nothing runs until a terminal operation asks for it. It is unrelated to the byte streams injava.io. - Learn it in 53. Streams: processing collections step by step and 54. Collectors and stream recipesSee also Intermediate operation, Terminal operation, Lambda expression
- Stringalso text, string concatenation
- The class for text, written in double quotes:
"hello".+joins strings, and methods such astoUpperCase()andsubstring(1, 3)return a new String, because a String never changes. Compare two strings withequals, never==. - Learn it in 2. Variables, types, and input/output, 20. Strings, StringBuilder, StringBuffer and 21. String practice problemsSee also StringBuilder, Immutable, equals
- String poolalso string interning, intern
- A store where Java keeps one shared copy of each string literal, so two
"hi"literals in your code are the same object. Strings built while the program runs, such as withnew String(...)or+on variables, are usually separate objects, which is why==on strings gives surprising answers. - Learn it in 20. Strings, StringBuilder, StringBufferSee also String, equals, Immutable
- StringBuilderalso StringBuffer
- A changeable sequence of characters for building text piece by piece:
sb.append("x")adds to the same object instead of making a new String each time. Use it in loops and calltoString()at the end;StringBufferis an older, thread-safe twin that is a little slower. - Learn it in 20. Strings, StringBuilder, StringBuffer and 70. Creating and executing queriesSee also String, Immutable
- Structured concurrencyalso StructuredTaskScope
- Treating a group of related tasks that run on different threads as one unit, so they start together, finish together and are cancelled together if one fails. Java's
StructuredTaskScopefor this is still a preview API in Java 25, so it needs the--enable-previewflag. - Learn it in 62. Virtual threadsSee also Virtual thread, ExecutorService
- superalso super(), super.method()
- The keyword for reaching the parent class from a subclass.
super.describe()runs the parent's version of a method you overrode, andsuper(...)in a constructor runs the parent's constructor. - Learn it in 16. Inheritance and 17. Method overriding and superQuick guide: this vs super in Java, with ExamplesSee also Overriding, Constructor, Inheritance
- Swingalso AWT, Abstract Window Toolkit, javax.swing
- Java's older desktop toolkit, in
javax.swingsince Java 1.2 in 1998, which paints its own buttons and menus in Java. It came after AWT, the first toolkit, which asks the operating system to draw each control; both still ship with the JDK, and JavaFX is the newer choice. - Learn it in 76. JavaFX overview, features, and architectureSee also JavaFX
- Switch expressionalso arrow case, yield, exhaustive switch, exhaustiveness
- A
switchthat produces a value:String size = switch (n) { case 1 -> "small"; default -> "large"; };. It must be exhaustive, covering every possible value, so over an enum or a sealed type you can list every case without adefault, and a missing case is a compile error. A case with a block hands back its value withyield. - Learn it in 4. Making decisions: if, else and switch, 56. Modern Java syntax: var, text blocks and more and 30. Sealed types and pattern matchingSee also switch statement, Sealed class, Pattern matching
- switch statementalso switch, case, default, fall-through
- Picks one of several branches by comparing a value with each
case, withdefaultfor anything else. In the colon form,case 1:, execution falls through into the cases below until abreak, a classic bug; the arrow form,case 1 ->, runs only its own case. - Learn it in 4. Making decisions: if, else and switchSee also Switch expression, break and continue, if statement
- synchronizedalso lock, monitor, synchronized block
- A keyword that lets only one thread at a time run code guarded by the same object's lock. Other threads wait their turn, so steps such as
count++behave as one step that nothing can cut into. - Learn it in 60. Thread creation and synchronizationSee also Race condition, ReentrantLock, Deadlock
T18
- Terminal operationalso toList, count, forEach, collect
- The last step of a stream pipeline, which produces a result or an action and starts the work:
toList(),count(),forEach(...),collect(...)orreduce(...). A stream can run only one, and using it again throws anIllegalStateException. - Learn it in 53. Streams: processing collections step by stepSee also Intermediate operation, Collectors, reduce
- Ternary operatoralso ?:, conditional operator
- A one-line if-else that produces a value:
condition ? valueIfTrue : valueIfFalse. For example,String label = age >= 18 ? "adult" : "minor";. - Learn it in 4. Making decisions: if, else and switchSee also if statement, Switch expression
- @Test
- The JUnit annotation that marks a method as a test, such as
@Test void emptyCartTotalsZero(). JUnit finds and runs every such method, and the test fails if an assertion fails or an exception escapes. - Learn it in 22. Testing your code with JUnitSee also JUnit, Assertion, Annotation
- Test-driven developmentalso TDD, red, green, refactor
- Writing a failing test first, then the simplest code that makes it pass, then tidying the code while the tests stay green. The cycle is called red, green, refactor, and it repeats for each small piece of behavior.
- Learn it in 22. Testing your code with JUnitSee also Unit test, Refactoring
- Text blockalso """, multi-line string
- A string literal that spans several lines between triple quotes,
""", where line breaks and quotes need no escaping. Java removes the indentation the lines share, which makes text blocks a good fit for JSON, SQL and HTML inside code. - Learn it in 56. Modern Java syntax: var, text blocks and moreSee also String, JSON
- thisalso this keyword
- Inside a method or constructor,
thisis the object the code is running on.this.name = name;stores the parameternamein the object's own field when the two share a name. - Learn it in 15. The this keyword and object references and 13. ConstructorsQuick guide: this vs super in Java, with ExamplesSee also Constructor, Field, super
- Threadalso Thread class, main thread, start, run
- One path of execution through a program; every program begins with one, the main thread.
new Thread(task).start()starts another that runstask.run()alongside the code that started it, while callingrun()yourself just runs the code on the current thread. - Learn it in 59. Introduction to threads and 60. Thread creation and synchronizationSee also Runnable, Concurrency, Thread lifecycle
- Thread lifecyclealso thread states, join, sleep, NEW, RUNNABLE, TERMINATED
- The states a thread passes through: new before
start(), runnable while it can run, blocked or waiting while it needs a lock, sleeps or waits for another thread, and terminated oncerun()ends.Thread.sleep(500)pauses the current thread for half a second, andt.join()waits until threadthas terminated. - Learn it in 60. Thread creation and synchronizationSee also Thread, synchronized, Deadlock
- Thread safetyalso thread-safe
- A class is thread-safe when it behaves correctly even while several threads use it at once. Immutable objects, locks, atomic variables and concurrent collections such as
ConcurrentHashMapget you there, whileArrayListandHashMapare not thread-safe. - Learn it in 63. Safe sharing: atomics, locks and concurrent collections and 20. Strings, StringBuilder, StringBufferSee also Race condition, Immutable, ConcurrentHashMap
- throwalso throw new
- The statement that raises an exception yourself:
throw new IllegalArgumentException("Amount must be positive");. The method stops at that line, and Java looks for the nearest matchingcatchup the call stack. - Learn it in 48. Exception handlingSee also throws, Custom exception, IllegalArgumentException
- throwsalso throws clause
- The part of a method's declaration that lists the checked exceptions it may pass on to its caller:
void load() throws IOException. It throws nothing by itself; it warns every caller to catch that exception or declare it too. - Learn it in 48. Exception handling and 46. Reading filesSee also throw, Checked exception
- toStringalso toString()
- The method that turns an object into text, called for you by
printlnand by+with a string. Every class inherits a version fromObject, the class at the top of every class family, which prints the class name and a hash code such asDog@1b6d3586, so classes override it to show their fields. - Learn it in 36. equals, hashCode and toString and 29. Records: data classes in one lineSee also equals, hashCode, Overriding
- TreeMapalso sorted map
- A map that keeps its keys in sorted order, so it can answer questions such as the smallest key or the first key after 50. Its keys must be comparable, or you give it a
Comparator. - Learn it in 35. HashMap and HashSet: finding things fast and 37. Comparable, Comparator and sortingSee also HashMap, TreeSet, Comparator
- TreeSetalso sorted set
- A set that keeps its values in sorted order and can answer questions such as the smallest value or the first one after 50. It decides whether two values are the same with
compareToor its comparator, never withequals. - Learn it in 37. Comparable, Comparator and sortingSee also TreeMap, Set, Comparable
- try-catchalso try, catch, try/catch, multi-catch
- The statement that handles exceptions: code that might fail goes in the
tryblock, and acatch (IOException e)block runs only if that kind of exception is thrown. Onecatchcan handle several types at once, as incatch (IOException | SQLException e). - Learn it in 48. Exception handling and 46. Reading filesSee also finally, Exception, Try-with-resources
- Try-with-resourcesalso try with resources, AutoCloseable
- A
trythat opens resources in parentheses and closes them for you when the block ends, even if an exception is thrown:try (BufferedReader in = new BufferedReader(new FileReader("data.txt"))) { ... }. It works with anything that implementsAutoCloseable, such as readers, writers, scanners and database connections. - Learn it in 46. Reading files, 47. Writing files and 70. Creating and executing queriesSee also try-catch, finally, BufferedReader
- Two-dimensional arrayalso 2D array, matrix, grid, nested loop, jagged array
- An array whose elements are arrays, used for grids and tables:
new int[3][4]has 3 rows of 4 columns, andgrid[r][c]reads rowr, columnc. You walk it with nested loops, an outer loop over the rows and an inner one over the columns. - Learn it in 8. Arrays, two dimensions, and practiceSee also Array, for loop, O(n^2)
- Type erasurealso erasure
- The compiler checks generic types and then removes them, so while the program runs a
List<String>and aList<Integer>are both just aList. That is why code such asnew T()ornew T[10]does not compile. - Learn it in 33. Generics: one class for many typesSee also Generics, Wildcard
U6
- UML class diagramalso UML, class diagram
- A drawing of classes as boxes listing their fields and methods, joined by lines that show how they relate: a solid line with a hollow triangle for inheritance, a dashed one for implementing an interface, and a filled diamond for composition. UML stands for Unified Modeling Language.
- Learn it in 31. Designing classes wellSee also Class, Inheritance, Composition
- Unchecked exceptionalso RuntimeException, unchecked
- An exception the compiler does not make you catch or declare:
RuntimeExceptionand its subclasses, such asNullPointerExceptionandIllegalArgumentException, and everyError. They usually point to a bug in the code rather than a problem outside it. - Learn it in 48. Exception handlingSee also Checked exception, Exception, NullPointerException
- Unit testalso test, automated test
- A small automatic check that runs one piece of code, usually one method, and compares its result with the answer you wrote down. A suite of them reruns in seconds after every change and tells you at once what broke.
- Learn it in 22. Testing your code with JUnitSee also JUnit, Assertion, Arrange-act-assert
- Unmodifiable collectionalso List.of, Set.of, Map.of, immutable list, read-only
- A collection that throws
UnsupportedOperationExceptionwhen code tries to add, remove or replace an element.List.of,Set.of,Map.ofandcopyOfmake them, and they also refusenullelements. - Learn it in 34. The Collections Framework and 7. ArrayList: a list that can growSee also Immutable, List, Collections Framework
- Unnamed variablealso _, underscore
- A single
_in place of a name you will never use, as incatch (NumberFormatException _)or the lambda(a, _) -> a. It arrived in Java 22 and tells the reader that the value is ignored on purpose. - Learn it in 30. Sealed types and pattern matching and 56. Modern Java syntax: var, text blocks and moreSee also Pattern matching, Lambda expression
- Upcasting and downcastingalso upcast, downcast
- Moving a reference up or down a class family. Upcasting, as in
Animal a = new Dog();, happens by itself and is always safe; downcasting, as inDog d = (Dog) a;, needs a cast and fails if the object is not aDog. - Learn it in 18. PolymorphismSee also ClassCastException, instanceof, Casting
V3
- varalso local variable type inference, type inference
- Lets the compiler work out a local variable's type from its starting value:
var names = new ArrayList<String>();is still anArrayList<String>. The type is fixed when the code compiles, as always, andvarworks only for local variables given a value straight away. - Learn it in 2. Variables, types, and input/output, 56. Modern Java syntax: var, text blocks and more and 30. Sealed types and pattern matchingSee also Static typing, Variable, Generics
- Variablealso declaration, local variable, scope
- A named place that holds a value, declared with a type:
int score = 10;. The value can change later but the type cannot. A variable declared inside a method, a local variable, exists only until the closing}of its block, which is its scope. - Learn it in 2. Variables, types, and input/output and 12. Methods: parameters and return valuesSee also Static typing, Primitive type, Field
- Virtual threadalso Thread.ofVirtual, newVirtualThreadPerTaskExecutor, platform thread, blocking I/O
- A lightweight thread run by the JVM instead of the operating system, final since Java 21. When it blocks, waiting for a file, the network or
sleep, it steps off the platform thread (an operating system thread) that was carrying it, so one program can run hundreds of thousands of them. Start one withThread.ofVirtual().start(task), or one per task withExecutors.newVirtualThreadPerTaskExecutor(). - Learn it in 62. Virtual threadsSee also Thread, ExecutorService, Structured concurrency
W3
- while loopalso while, do-while, infinite loop
- A loop that checks its condition before each round, so its body may run zero times:
while (balance < goal) { ... }. Ado { ... } while (...);loop checks after the body, so it always runs at least once, and a loop whose condition never becomesfalseis an infinite loop. - Learn it in 5. Loops: for, while, do-while and 45. Scanner and console applicationsSee also for loop, break and continue, boolean
- Wildcardalso ?, ? extends, ? super
- A
?in a generic type that stands for some type you do not name.List<? extends Number>accepts a list of any kind of number to read from, andList<? super Integer>accepts any list you can put integers into. - Learn it in 33. Generics: one class for many typesSee also Generics, Type erasure
- Wrapper classalso Integer, Double, Boolean, Character
- A class that holds one primitive value as an object:
Integerforint,Doublefordouble,Characterforcharand so on. Collections can only hold objects, so aListof numbers is aList<Integer>. - Learn it in 32. Wrapper classes and autoboxingSee also Primitive type, Autoboxing, Integer cache