Java SE 11 Developer study materials
Java SE 11 Developer study resources

Java SE 11 Developer key terms

Java SE 11 Developer · Get comfortable with the vocabulary.

primitive widening conversion

An automatic, lossless promotion of a smaller primitive to a larger compatible type, such as int to long or float to double, applied by the compiler without a cast.

Related: narrowing cast, autoboxing
narrowing cast

An explicit conversion that may lose information or magnitude, such as long to int or double to float, requiring a cast operator and permitted between compatible primitive types.

Related: primitive widening conversion, autoboxing
autoboxing

The compiler's automatic wrapping of a primitive into its wrapper class, and unwrapping back, when a reference type is required; cached values apply for small integral and boolean ranges.

Related: narrowing cast, wrapper class
wrapper class

One of the immutable reference types such as Integer, Double, or Character that encapsulate a primitive value and provide parsing, conversion, and utility methods.

Related: autoboxing, var
var

A reserved type name allowing local variable declarations whose type is inferred from the initializer; it cannot be used for fields, method parameters, or without an initializer.

Related: wrapper class
switch expression

A switch form that produces a value using arrow labels and yield, supports exhaustiveness for enums and strings, and avoids fall-through by default.

Related: fall-through, labeled break
fall-through

Execution continuing into subsequent case labels when a matched case lacks a break or return, a classic source of logic errors in colon-style switch statements.

Related: switch expression, labeled break
labeled break

A break statement followed by a label that exits the named enclosing loop or block, useful for escaping nested iteration in one step.

Related: fall-through, switch expression
polymorphism

The ability of a supertype reference to invoke subclass-specific behavior through overridden methods, resolved at runtime by dynamic dispatch.

Related: virtual method dispatch, method overloading
virtual method dispatch

Runtime selection of the most specific overriding implementation based on the actual object type, not the declared reference type.

Related: polymorphism, covariant return type
method overloading

Declaring multiple methods with the same name but different parameter lists in one class; selection happens at compile time based on static argument types.

Related: polymorphism, covariant return type
covariant return type

An override whose return type is a subtype of the overridden method's return type, permitted since Java 5 while parameter types must match exactly.

Related: method overloading, virtual method dispatch
abstract class

A class declared abstract that cannot be instantiated and may contain abstract methods that concrete subclasses must implement, plus shared state and behavior.

Related: interface default method, polymorphism
interface default method

A method in an interface with a body marked default, allowing interfaces to evolve without breaking implementers; it is inherited but can be overridden.

Related: abstract class, functional interface
checked exception

A Throwable subtype other than RuntimeException and Error that the compiler requires to be caught or declared with throws.

Related: unchecked exception, try-with-resources
unchecked exception

A RuntimeException or Error subtype not enforced by the compiler; typically signals programming defects or unrecoverable conditions.

Related: checked exception, try-with-resources
try-with-resources

A try statement declaring resources that implement AutoCloseable and are closed automatically in reverse order, with suppressed exceptions attached when closing fails.

Related: checked exception, unchecked exception
assertion

A statement using assert that tests an invariant and throws AssertionError when false; disabled by default and enabled with the -ea JVM option.

Related: unchecked exception
array covariance

The rule that a String[] is assignable to Object[], which compiles but can throw ArrayStoreException at runtime when an incompatible element is stored.

Related: ArrayStoreException, generic type erasure
ArrayStoreException

A runtime exception thrown when an attempt is made to store an element of the wrong type into a covariant array reference.

Related: array covariance
generic type erasure

The compiler's removal of generic type information so that parameterized types become raw types or bounds at runtime, preventing instanceof and array creation with type parameters.

Related: array covariance, wildcard
wildcard

A generic type argument written as ?, optionally bounded with extends or super, expressing unknown or restricted type families for flexible method signatures.

Related: generic type erasure, Comparable
Comparable

A generic interface defining compareTo for natural ordering, used by sorted collections and by Collections.sort and Arrays.sort.

Related: Comparator, wildcard
Comparator

A functional interface defining compare for external, customizable ordering, composable with thenComparing and reversed and usable with sorted stream operations.

Related: Comparable, stream pipeline
stream pipeline

A sequence consisting of a source, zero or more lazy intermediate operations, and one terminal operation that triggers traversal and produces a result.

Related: Optional, method reference
Optional

A container that may hold a value or be empty, encouraging explicit handling of absence through methods such as map, flatMap, orElse, and ifPresent.

Related: stream pipeline, functional interface
method reference

A compact lambda form written with double colons, such as String::length or System.out::println, referring to a static, instance, or constructor method.

Related: functional interface, stream pipeline
functional interface

An interface with exactly one abstract method, eligible for lambda expressions and method references, optionally annotated with @FunctionalInterface for compile-time checking.

Related: method reference, interface default method
module descriptor

The module-info.java file declaring a module's name, its required dependencies, exported packages, opened packages, and services it uses or provides.

Related: exports directive, transitive dependency
exports directive

A module declaration clause making a package's public types accessible to other modules; without it, types remain inaccessible even if public.

Related: module descriptor, transitive dependency
transitive dependency

A requires clause marked transitive that re-exposes a dependency's exported packages to modules that read the declaring module.

Related: module descriptor, exports directive
thread synchronization

Coordination of concurrent access using synchronized blocks or methods, locks, or atomic classes to guarantee visibility and mutual exclusion of shared mutable state.

Related: volatile, ExecutorService
volatile

A field modifier guaranteeing that reads and writes go to main memory with happens-before visibility, but without atomicity for compound operations.

Related: thread synchronization, ExecutorService
ExecutorService

A thread pool abstraction for submitting tasks, obtaining Futures, and shutting down gracefully; implementations come from the Executors factory methods.

Related: volatile, thread synchronization
Path

An immutable, platform-independent representation of a file system location created with Paths.get or Path.of, supporting resolution and normalization operations.

Related: Files utility class, BufferedReader
Files utility class

A static helper offering operations such as readAllLines, write, copy, move, walk, and lines, throwing IOException on failure.

Related: Path, BufferedReader
BufferedReader

A character-input wrapper that buffers reads for efficiency and provides readLine for line-oriented processing of text streams.

Related: Path, Files utility class
serialization filter

A mechanism using ObjectInputFilter to restrict classes allowed during deserialization, mitigating gadget-chain attacks on untrusted data.

Related: input validation, least privilege
input validation

Checking and constraining external data before use, including length, range, and format checks, to prevent injection and unexpected state.

Related: serialization filter, least privilege
least privilege

Granting only the permissions and access a component needs, applied in Java through security policies, module exports, and restricted file access.

Related: input validation, serialization filter
Locale

An object identifying a language and region that drives formatting, parsing, and message selection; it is distinct from the default time zone.

Related: DateTimeFormatter, ResourceBundle
DateTimeFormatter

An immutable formatter and parser for date-time values built from patterns or localized styles, with configurable locale and zone.

Related: Locale, ResourceBundle
ResourceBundle

A container of locale-specific objects loaded by base name, falling back from specific to default locales, used for localizing messages.

Related: Locale, DateTimeFormatter
retention policy

An annotation meta-property controlling how long an annotation is kept: SOURCE discarded by the compiler, CLASS in bytecode only, or RUNTIME reflectively readable.

Related: functional interface, annotation target
annotation target

The @Target declaration restricting where an annotation may be applied, such as TYPE, METHOD, FIELD, PARAMETER, or a combination.

Related: retention policy, functional interface