StudyToCert

Lecciones en español / OCP Java / Hoja de repaso · English

Hoja de repaso de OCP Java 1Z0-831 (Java SE 25)

Cada consejo para el examen y término clave de las lecciones gratuitas de OCP Java, por dominio. Usa la opción Imprimir de tu navegador para guardarla como PDF.

Dominio 1: Handling date, time, text, numeric and boolean values (12%)

Consejos para el examen

Términos clave

Primitive type (tipo primitivo)
Uno de los ocho tipos de valor integrados (byte, short, int, long, float, double, char, boolean) que no son objetos.
Literal
Un valor fijo escrito en el código fuente, como 42, 3.5f, 'x' o 0b1010.
Octal literal (literal octal)
Un literal entero con un 0 inicial, que se lee en base 8, por lo que 010 equivale a 8.
Default value (valor por defecto)
El valor que recibe automáticamente un campo o elemento de arreglo: 0, false, '\u0000' o null. Las variables locales no tienen ninguno.
Wrapper class (clase envoltorio)
Una clase inmutable como Integer o Double que contiene un valor primitivo como objeto.
Autoboxing
La conversión automática de un primitivo a su wrapper, que el compilador realiza mediante valueOf.
Unboxing
La conversión automática de un wrapper a su primitivo; lanza NullPointerException si la referencia es null.
Integer cache (caché de Integer)
Un conjunto de objetos Integer, al menos de -128 a 127, que Integer.valueOf reutiliza, lo que hace que == parezca funcionar con valores pequeños.
Operator precedence (precedencia de operadores)
Las reglas que deciden qué operador de una expresión sin paréntesis se aplica primero.
Postfix increment (incremento postfijo)
x++: la expresión produce el valor anterior y luego x aumenta en uno.
Compound assignment (asignación compuesta)
Un operador como += que combina una operación con una asignación y convierte el resultado al tipo del operando izquierdo.
Short-circuit evaluation (evaluación de cortocircuito)
&& y || omiten evaluar el operando derecho cuando el operando izquierdo ya determina el resultado.
Widening conversion (conversión de ensanchamiento)
Una conversión automática a un tipo de mayor rango, como de int a long o de float a double.
Narrowing conversion (conversión de estrechamiento)
Una conversión a un tipo de menor rango, que necesita un cast explícito salvo que sea una constante de tiempo de compilación que quepa.
Numeric promotion (promoción numérica)
La regla por la que los operandos de los operadores aritméticos se convierten a un tipo común de al menos int antes de la operación.
Compile-time constant (constante de tiempo de compilación)
Una expresión cuyo valor conoce el compilador, como un literal o una variable final inicializada con un literal.
Math.round
Redondea al número entero más cercano con las mitades hacia el infinito positivo; devuelve long para un argumento double e int para un float.
Math.floor / Math.ceil
Devuelven el double igual o justo por debajo (floor) o igual o justo por encima (ceil) del argumento, moviéndose hacia el infinito negativo o positivo.
Math.pow
Eleva una base double a un exponente double y siempre devuelve un double.
Overloading by type (sobrecarga por tipo)
abs, max y min tienen versiones para int, long, float y double, así que el tipo del resultado sigue a los tipos promovidos de los argumentos.
Immutability (inmutabilidad)
La propiedad de que el estado de un objeto no puede cambiar después de su creación; los métodos de String devuelven cadenas nuevas en su lugar.
String pool
Un área de la JVM que guarda una única copia compartida de cada literal de cadena y de cada cadena constante de tiempo de compilación.
substring(begin, end)
Devuelve los caracteres desde begin hasta end, sin incluir end.
isBlank
Devuelve true si una cadena está vacía o solo contiene caracteres de espacio en blanco.
StringBuilder
Una secuencia de caracteres mutable y no sincronizada cuyos métodos cambian el objeto en el mismo lugar.
Method chaining (encadenamiento de métodos)
Llamar un método sobre el resultado de otro; funciona con StringBuilder porque los métodos que lo modifican devuelven this.
replace(start, end, str)
Elimina los caracteres de start a end (exclusivo) e inserta str en ese lugar.
Capacity (capacidad)
La cantidad de almacenamiento que un StringBuilder tiene reservada, que es independiente de su longitud actual.
Text block (bloque de texto)
Un literal String de varias líneas delimitado por tres comillas dobles, cuyo contenido empieza en la línea siguiente al delimitador de apertura.
Incidental whitespace (espacio en blanco incidental)
La sangría inicial común que el compilador quita de cada línea de un bloque de texto.
Line continuation (continuación de línea)
Una barra invertida al final de una línea de un bloque de texto, que elimina el salto de línea para que la línea siguiente se una a ella.
\s escape (escape \s)
Un escape para un único espacio que sobrevive a la eliminación de los espacios en blanco finales.
LocalDate
Una fecha inmutable (año, mes, día) sin hora del día y sin zona horaria.
LocalDateTime
Una fecha y hora sin zona, así que no identifica un único instante global.
ZonedDateTime
Una fecha y hora con un ZoneId, que identifica un momento exacto y aplica el desfase y las reglas de horario de verano de esa zona.
Instant
Un punto en la línea de tiempo UTC medido desde el epoch 1970-01-01T00:00:00Z.
Period
Una cantidad de tiempo basada en fechas, en años, meses y días, que se imprime como P1Y2M3D.
Duration
Una cantidad basada en tiempo guardada como segundos y nanosegundos, que se imprime como PT2H30M.
DST gap (hueco de horario de verano)
La hora local que se salta cuando los relojes se adelantan; una hora dentro de ella se desplaza hacia adelante la duración del hueco.
DST overlap (solapamiento de horario de verano)
La hora local que se repite cuando los relojes se atrasan; ZonedDateTime mantiene por defecto el desfase anterior.

Dominio 2: Controlling program flow (8%)

Consejos para el examen

Términos clave

Conditional expression (expresión condicional)
El operador ternario cond ? a : b, que se evalúa a uno de dos valores según un boolean.
Dangling else (else colgante)
La regla de que un else se asocia con el if sin pareja más cercano, sin importar la indentación.
Boolean condition (condición booleana)
Una expresión de tipo boolean o Boolean, el único tipo que aceptan if, while y el operador ternario.
Empty statement (sentencia vacía)
Un punto y coma solo; después de if(...) se convierte en todo el cuerpo del if.
Fall-through (caída a través)
En un switch con dos puntos, la ejecución que continúa hacia las sentencias del siguiente case cuando no hay break.
case label (etiqueta case)
Una constante de tiempo de compilación que marca un punto de entrada en un switch.
default label (etiqueta default)
El punto de entrada usado cuando ningún case coincide; puede aparecer en cualquier parte del switch.
Selector expression (expresión selectora)
El valor en switch(...) que se compara con las etiquetas case.
Switch expression (expresión switch)
Un switch que se evalúa a un valor; debe ser exhaustivo y no puede hacer fall-through cuando usa etiquetas de flecha.
Arrow label (etiqueta de flecha)
case X -> ..., una etiqueta cuyo lado derecho es una única expresión, un bloque o un throw, sin fall-through.
yield
Una sentencia que entrega el valor de una expresión switch desde dentro de un bloque o de un grupo con dos puntos.
Exhaustiveness (exhaustividad)
El requisito de que una expresión switch cubra todos los valores posibles de su selector.
Type pattern (patrón de tipo)
Un patrón como String s que coincide cuando el valor es instancia del tipo y lo vincula a una variable.
Record pattern (patrón de record)
Un patrón como Point(int x, int y) que coincide con un record y extrae sus componentes.
Guard (guarda)
Una cláusula when después de un patrón que agrega una condición booleana para que el case coincida.
case null
Una etiqueta que permite que un switch con patrones maneje un selector null en lugar de lanzar NullPointerException.
Dominance (dominancia)
Un case está dominado cuando un case anterior coincide con todos los valores con los que él podría coincidir, lo que lo hace inalcanzable y es un error de compilación.
Exhaustive switch (switch exhaustivo)
Un switch cuyos cases cubren todos los valores posibles del selector, requerido para expresiones switch y switch con patrones.
Unconditional pattern (patrón incondicional)
Un patrón que coincide con todos los valores del tipo del selector, como case Object o para un selector Object.
MatchException
La excepción de tiempo de ejecución que lanza un switch exhaustivo si encuentra un valor que sus cases compilados no cubren, como un subtipo agregado recientemente.
do-while loop (bucle do-while)
Un bucle que ejecuta su cuerpo una vez antes de evaluar la condición, así que siempre se ejecuta al menos una vez.
Enhanced for loop (bucle for mejorado)
for (T x : source), que visita cada elemento de un arreglo o Iterable sin índice.
Iterable
La interfaz que permite usar un objeto como fuente de un bucle for mejorado.
Infinite loop (bucle infinito)
Un bucle cuya condición nunca se vuelve false, como while(true) o for(;;), del que normalmente se sale con break o return.
break
Termina el bucle o switch más interno que lo contiene, o la sentencia etiquetada que nombra.
continue
Salta el resto de la iteración actual del bucle más interno, o del bucle etiquetado que nombra.
Label (etiqueta)
Un identificador seguido de dos puntos colocado antes de una sentencia para que break o continue puedan apuntar a ella.
Nested loop (bucle anidado)
Un bucle dentro de otro bucle; un break o continue sin etiqueta afecta solo al interno.
Unreachable statement (sentencia inalcanzable)
Una sentencia que el compilador puede demostrar que nunca se ejecutará, lo cual es un error de compilación en Java.
Definite assignment (asignación definida)
La regla del compilador según la cual una variable local debe asignarse en cada camino antes de leerse.
Constant expression (expresión constante)
Una expresión que el compilador puede evaluar, como true o una variable final que contiene un literal, usada en el análisis de alcanzabilidad.
Missing return statement
El error que se reporta cuando un método que no es void puede llegar a su final sin devolver un valor.

Dominio 3: Using object-oriented concepts in Java (20%)

Consejos para el examen

Términos clave

Default constructor (constructor por defecto)
El constructor sin argumentos que el compilador agrega solo cuando una clase no declara constructores.
Static initializer (inicializador estático)
Un bloque static { } que se ejecuta una vez cuando la clase se inicializa.
Instance initializer (inicializador de instancia)
Un bloque { } en el cuerpo de la clase que se ejecuta para cada objeto nuevo, antes del cuerpo del constructor pero después del constructor de la superclase.
Pass by value (paso por valor)
Java copia cada argumento en el parámetro; para los objetos, el valor copiado es la referencia.
Prologue (prólogo)
Las sentencias de un constructor antes de la llamada explícita a super(...) o this(...), que no pueden usar el objeto que se está construyendo.
Epilogue (epílogo)
Las sentencias después de la llamada explícita al constructor, donde el objeto puede usarse normalmente.
Early construction context (contexto de construcción temprana)
El prólogo y los argumentos de la llamada al constructor, donde las referencias a la instancia actual están restringidas.
Explicit constructor invocation (invocación explícita de constructor)
Una sentencia super(...) o this(...) que encadena a otro constructor.
Overriding (sobrescritura)
Redefinir un método de instancia heredado con la misma firma; el tipo del objeto en tiempo de ejecución decide qué versión se ejecuta.
Overloading (sobrecarga)
Declarar métodos con el mismo nombre pero listas de parámetros distintas; el compilador elige uno según los tipos de los argumentos.
Hiding (ocultamiento)
Declarar un método estático o un campo con el mismo nombre que uno del padre; el tipo de la referencia decide cuál se usa.
Covariant return type (tipo de retorno covariante)
El tipo de retorno de un método sobrescrito que es un subtipo del tipo de retorno del método original.
Abstract method (método abstracto)
Un método sin cuerpo que las subclases concretas o las clases que implementan deben implementar.
Default method (método default)
Un método de instancia de interfaz con cuerpo que las clases que implementan heredan y pueden sobrescribir.
Static interface method (método estático de interfaz)
Un método que pertenece a la propia interfaz y solo se llama como InterfaceName.method().
Private interface method (método privado de interfaz)
Un método auxiliar con cuerpo que solo es visible dentro de la interfaz.
Record component (componente de record)
Un nombre y un tipo en el encabezado de un record; cada uno se convierte en un campo private final y un accesor public.
Canonical constructor (constructor canónico)
El constructor cuyos parámetros coinciden en orden con los componentes del record y que asigna cada campo.
Compact constructor (constructor compacto)
Un constructor canónico escrito sin lista de parámetros, usado para validar o normalizar parámetros antes de que los campos se asignen automáticamente.
Accessor method (método accesor)
El método generado con el nombre de un componente, como x(), que devuelve su valor.
Sealed class (clase sellada)
Una clase o interfaz que permite solo los subtipos directos nombrados en su cláusula permits (o en el mismo archivo).
permits clause (cláusula permits)
La lista de clases o interfaces que pueden extender o implementar directamente un tipo sellado.
non-sealed
Un modificador para una subclase permitida que reabre la jerarquía para que cualquier clase pueda extenderla.
Exhaustive hierarchy (jerarquía exhaustiva)
Un conjunto cerrado de subtipos que permite al compilador verificar que un switch maneje todos los casos.
Enum
Una clase especial con un conjunto fijo de instancias con nombre declaradas al inicio de su cuerpo.
values()
Un método estático generado que devuelve un arreglo con todas las constantes del enum en orden de declaración.
valueOf(String)
Devuelve la constante con el nombre exacto dado, o lanza IllegalArgumentException.
ordinal()
La posición, empezando en cero, de una constante en su declaración.
Static nested class (clase anidada estática)
Una clase declarada static dentro de otra clase; no necesita una instancia externa y se crea con new Outer.Nested().
Inner class (clase interna)
Una clase miembro no estática cuyas instancias están ligadas a una instancia externa y pueden acceder a sus miembros.
Anonymous class (clase anónima)
Una clase sin nombre declarada e instanciada en una sola expresión, que extiende una clase o implementa una interfaz.
Effectively final (efectivamente final)
Una variable local que nunca se reasigna después de inicializarse, lo que permite usarla desde clases locales y lambdas.
Pattern matching for instanceof (pattern matching con instanceof)
Una comprobación instanceof que además enlaza el valor a una nueva variable del tipo comprobado cuando coincide.
Pattern variable (variable de patrón)
La variable declarada por un patrón, como s en o instanceof String s.
Flow scoping (alcance por flujo)
La regla según la cual una variable de patrón está en alcance solo donde el compilador puede demostrar que la coincidencia tuvo éxito.
Record pattern (patrón de record)
Un patrón como Point(int x, int y) que comprueba un tipo record y enlaza sus componentes.
Encapsulation (encapsulamiento)
Mantener los campos private y controlar el acceso al estado de un objeto mediante métodos.
Immutable object (objeto inmutable)
Un objeto cuyo estado no puede cambiar después de su construcción, como un String o un record bien diseñado.
Defensive copy (copia defensiva)
Una copia de una entrada o salida mutable que impide que código externo cambie el estado interno de un objeto.
var
Un nombre de tipo reservado que hace que el compilador infiera el tipo de una variable local a partir de su inicializador.
Garbage collector (recolector de basura)
El componente de la JVM que recupera automáticamente la memoria usada por objetos inalcanzables.
Eligible for garbage collection (elegible para recolección)
Un objeto que ningún hilo vivo puede alcanzar desde ninguna raíz del GC; puede recolectarse en cualquier momento posterior o nunca.
GC root (raíz del GC)
Un punto de partida para la alcanzabilidad, como una variable local en un método activo o un campo estático.
Island of isolation (isla de aislamiento)
Un grupo de objetos que se referencian entre sí pero no pueden alcanzarse desde ninguna raíz, así que todos son elegibles.

Dominio 4: Handling exceptions (8%)

Consejos para el examen

Términos clave

Throwable
La clase raíz de todo lo que puede lanzarse, con subclases directas Error y Exception.
Checked exception (excepción comprobada)
Una subclase de Exception, pero no de RuntimeException, que debe atraparse o declararse.
Unchecked exception (excepción no comprobada)
RuntimeException, Error o cualquiera de sus subclases, que el compilador no te obliga a manejar.
Handle-or-declare rule (regla de manejar o declarar)
El requisito del compilador de que el código que lanza una excepción checked la atrape o la liste en throws.
try block (bloque try)
Un bloque que contiene código que podría lanzar excepciones, seguido de bloques catch y/o finally.
catch block (bloque catch)
Un manejador que se ejecuta cuando se lanza en el try una excepción de su tipo declarado (o de un subtipo).
finally block (bloque finally)
Un bloque que se ejecuta después de try y catch pase lo que pase, a menos que la JVM termine.
Exception propagation (propagación de excepciones)
Una excepción no atrapada que sale del método actual y sube por la pila de llamadas hacia quien llama.
Multi-catch
Un bloque catch que lista varios tipos de excepción separados por |, compartiendo un manejador y una variable.
Related types (tipos relacionados)
Tipos de excepción donde uno es subclase de otro; no pueden aparecer ambos en el mismo multi-catch.
Implicitly final parameter (parámetro implícitamente final)
La variable del multi-catch, que no puede reasignarse dentro del bloque.
Precise rethrow (relanzamiento preciso)
Relanzar una variable de excepción atrapada y no modificada para que el método solo necesite declarar los tipos específicos que realmente pueden ocurrir.
Catch order (orden de los catch)
La secuencia de arriba hacia abajo en que se revisan los bloques catch; se ejecuta el primero que coincide.
Unreachable catch block (bloque catch inalcanzable)
Un manejador que el compilador demuestra que nunca puede ejecutarse, porque un bloque anterior atrapa su tipo o porque el try no puede lanzarlo.
Most specific first (el más específico primero)
La regla de escribir los manejadores de excepciones de subclases antes que los de superclases.
Checked exception analysis (análisis de excepciones checked)
El seguimiento que hace el compilador de qué excepciones checked puede lanzar un bloque try, según las cláusulas throws de los métodos y las sentencias throw.
try-with-resources
Una sentencia try que declara recursos entre paréntesis y los cierra automáticamente al final del bloque.
AutoCloseable
La interfaz con un único método close() que un recurso debe implementar para usarse en try-with-resources.
Closeable
Una subinterfaz de AutoCloseable usada por las clases de E/S, cuyo close() lanza IOException.
Reverse close order (cierre en orden inverso)
Los recursos se cierran en el orden opuesto al de su declaración: el último abierto es el primero en cerrarse.
Suppressed exception (excepción suprimida)
Una excepción lanzada al cerrar un recurso que se adjunta a la excepción principal en lugar de reemplazarla.
Primary exception (excepción principal)
La excepción que realmente se propaga; en try-with-resources, la que lanza el bloque try si la hay.
getSuppressed()
Un método de Throwable que devuelve un arreglo con las excepciones suprimidas por esta.
getCause()
Un método de Throwable que devuelve la excepción que causó esta, lo cual es distinto de las excepciones suprimidas.
throws clause (cláusula throws)
La parte del encabezado de un método o constructor que declara las excepciones checked que puede pasar a quienes lo llaman.
throw statement (sentencia throw)
Una sentencia que lanza un objeto de excepción, como throw new IOException().
Narrower exception (excepción más específica)
Una subclase de un tipo de excepción, que un método que sobrescribe puede declarar en lugar del tipo padre.
Contract (contrato)
Las promesas que la firma de un método hace a quienes lo llaman, incluidas qué excepciones checked deben manejar.
Custom exception (excepción personalizada)
Una clase definida por la aplicación que extiende Exception, RuntimeException o una de sus subclases.
Exception chaining (encadenamiento de excepciones)
Envolver una excepción atrapada como causa de una excepción nueva para conservar los detalles originales.
Cause (causa)
El Throwable pasado al constructor de una excepción y devuelto por getCause().
super(message)
La llamada al constructor que pasa un mensaje de detalle a la clase de excepción padre.

Dominio 5: Working with arrays and collections (10%)

Consejos para el examen

Términos clave

Array (arreglo)
Un objeto de longitud fija que contiene elementos de un tipo, accedidos por un índice que empieza en cero.
Shallow copy (copia superficial)
Una copia de un arreglo cuyos elementos son las mismas referencias a objetos que el original.
Insertion point (punto de inserción)
El índice donde se insertaría una clave ausente; binarySearch devuelve -(punto de inserción) - 1 para ella.
Arrays.mismatch
Devuelve el primer índice en el que dos arreglos difieren, o -1 si son iguales.
List
Una colección ordenada que permite duplicados y acceso por índice, como ArrayList o LinkedList.
Set
Una colección sin elementos duplicados, como HashSet, LinkedHashSet o TreeSet.
Map
Una estructura de claves únicas asociadas a valores que no es una Collection, como HashMap o TreeMap.
Deque (cola doble)
Una cola de doble extremo que admite inserción y eliminación en ambos extremos, utilizable como cola o como pila.
Unmodifiable collection (colección no modificable)
Una colección cuyos métodos modificadores lanzan UnsupportedOperationException, como las que crea List.of.
UnsupportedOperationException
La excepción en tiempo de ejecución que se lanza cuando una colección no admite una operación de modificación.
Fixed-size list (lista de tamaño fijo)
La lista devuelta por Arrays.asList, que admite set pero no add ni remove.
Unmodifiable view (vista no modificable)
Un envoltorio de solo lectura, como Collections.unmodifiableList, que sigue reflejando los cambios de la colección subyacente.
SequencedCollection
Una interfaz de Java 21 para colecciones con un orden de recorrido definido, que proporciona operaciones de primero/último y reversed().
SequencedSet
Una colección secuenciada sin duplicados, implementada por LinkedHashSet y heredada por SortedSet.
SequencedMap
Un map con un orden de entradas definido, implementado por LinkedHashMap y extendido por SortedMap.
reversed()
Devuelve una vista en orden inverso de una colección o map secuenciado que refleja los cambios posteriores.
getOrDefault
Devuelve el valor asociado si la clave está presente, o el valor por defecto dado en caso contrario, sin modificar el map.
putIfAbsent
Guarda un valor solo cuando la clave está ausente o asociada a null, y devuelve el valor anterior.
computeIfAbsent
Calcula y guarda un valor a partir de la clave solo cuando la clave está ausente o asociada a null, y devuelve el valor actual.
merge
Guarda un valor para una clave ausente, o lo combina con el valor existente usando una función; un resultado null elimina la clave.
Comparable
Una interfaz que implementa una clase para definir su orden natural mediante compareTo.
Comparator
Un objeto aparte que define un orden mediante compare, lo que permite varios órdenes para un mismo tipo.
thenComparing
Un método de Comparator que agrega una clave secundaria usada solo cuando la primera comparación empata.
Stable sort (ordenamiento estable)
Un ordenamiento que mantiene los elementos iguales en su orden relativo original.
Natural ordering (orden natural)
El orden definido por el propio método compareTo de un elemento, de la interfaz Comparable.
NavigableSet
Una interfaz de conjunto ordenado con métodos como floor, ceiling, headSet y tailSet, implementada por TreeSet.
floor / ceiling
El mayor elemento menor o igual, o el menor elemento mayor o igual, que un valor dado.
headSet / tailSet
Vistas de los elementos por debajo de un límite (exclusivo por defecto) o en y por encima de un límite (inclusivo por defecto).
Type parameter (parámetro de tipo)
Un marcador como T declarado entre corchetes angulares en una clase, interfaz o método y reemplazado por un argumento de tipo en cada uso.
Bounded type parameter (parámetro de tipo acotado)
Un parámetro de tipo restringido con extends, como <T extends Comparable<T>>, para que el código pueda llamar a los métodos de la cota.
Upper-bounded wildcard (comodín con cota superior)
? extends X: acepta X o cualquier subtipo; seguro para leer como X, pero solo se puede agregar null.
Lower-bounded wildcard (comodín con cota inferior)
? super X: acepta X o cualquier supertipo; seguro para agregar valores X, pero las lecturas devuelven Object.
Type erasure (borrado de tipos)
El compilador elimina los argumentos de tipo genéricos después de verificarlos, así que no están disponibles en tiempo de ejecución.
remove(int index)
Elimina y devuelve el elemento en la posición dada; lanza IndexOutOfBoundsException con un índice inválido.
remove(Object o)
Elimina el primer elemento igual a o y devuelve true si se eliminó uno, false en caso contrario.
Overload resolution phases (fases de resolución de sobrecargas)
El compilador intenta primero coincidencias sin boxing, luego con boxing y unboxing, y luego con varargs.
removeIf
Un método de Collection que elimina cada elemento que cumple un Predicate y devuelve true si se eliminó algo.

Dominio 6: Working with streams and lambda expressions (16%)

Consejos para el examen

Términos clave

Functional interface (interfaz funcional)
Una interfaz con exactamente un método abstracto, que una lambda o una referencia a método puede implementar.
Supplier<T>
No recibe argumentos y devuelve un T mediante get().
Predicate<T>
Recibe un T y devuelve un boolean mediante test(); se puede componer con and, or y negate.
UnaryOperator<T>
Una Function<T, T> cuyos tipos de entrada y salida son iguales; su método es apply.
BinaryOperator<T>
Una BiFunction<T, T, T> que combina dos valores del mismo tipo en uno; la usa reduce.
Lambda expression (expresión lambda)
Una función anónima escrita como parámetros -> cuerpo que implementa una interfaz funcional.
Effectively final (efectivamente final)
Una variable local que nunca se reasigna después de inicializarse, así que una lambda o clase interna puede capturarla.
Bound method reference (referencia a método ligada)
Una referencia sobre un objeto específico, como System.out::println, cuyo receptor queda fijo cuando se crea la referencia.
Unbound method reference (referencia a método no ligada)
Una referencia como String::length donde el primer argumento proporcionado en la llamada se convierte en el receptor.
Constructor reference (referencia a constructor)
ClassName::new, que crea un objeto nuevo usando el constructor que coincide con los parámetros de la interfaz destino.
Stream source (fuente del stream)
De dónde vienen los elementos, como una colección, un arreglo, valores de Stream.of, un rango o un generador.
IntStream.range
Produce ints desde el inicio hasta el final, sin incluirlo.
IntStream.rangeClosed
Produce ints desde el inicio hasta el final, incluyéndolo.
Stream.iterate
Construye un stream a partir de una semilla y una función aplicada repetidamente; la forma de dos argumentos es infinita, la de tres argumentos se detiene cuando un predicado falla.
Infinite stream (stream infinito)
Un stream sin final natural, creado con generate o con iterate de dos argumentos, que necesita una operación de cortocircuito para terminar.
Lazy evaluation (evaluación perezosa)
Las operaciones intermedias se ejecutan solo cuando una operación terminal hace pasar los elementos por la canalización.
flatMap
Asocia cada elemento a un stream y concatena los streams resultantes en un único stream.
Stateful operation (operación con estado)
Una operación intermedia como sorted o distinct que debe llevar registro de los elementos que ya ha visto.
Short-circuiting operation (operación de cortocircuito)
Una operación como limit que puede terminar sin procesar todos los elementos.
peek
Una operación intermedia que ejecuta una acción sobre cada elemento a medida que pasa, principalmente para depuración.
Terminal operation (operación terminal)
La operación final de una canalización que dispara el procesamiento y produce un resultado o un efecto secundario.
reduce
Combina los elementos en un solo valor con un acumulador, opcionalmente partiendo de un valor identidad.
Identity value (valor identidad)
Un valor inicial que no cambia el resultado al combinarse, como 0 para la suma o "" para la concatenación.
collect
Una reducción mutable que reúne los elementos en un contenedor, normalmente mediante un Collector.
Stream.toList()
Una operación terminal que devuelve un List no modificable con los elementos del stream.
groupingBy
Un collector que agrupa los elementos según un clasificador en un Map cuyos valores son listas o el resultado de un collector descendente.
partitioningBy
Un collector que divide los elementos en un Map<Boolean, ...> con las claves true y false siempre presentes.
Downstream collector (collector descendente)
Un collector pasado a groupingBy o partitioningBy que procesa cada grupo, como counting o mapping.
Merge function (función de fusión)
Un BinaryOperator dado a toMap que decide el valor cuando dos elementos se asocian a la misma clave.
joining
Un collector que concatena cadenas con un delimitador, prefijo y sufijo opcionales.
IntStream
Un stream de valores int primitivos con operaciones numéricas como sum, average y summaryStatistics.
OptionalDouble
Un contenedor tipo Optional para un double, devuelto por average() en los streams primitivos; se lee con getAsDouble().
boxed()
Convierte un stream primitivo en un stream de los objetos envoltorio correspondientes.
IntSummaryStatistics
Un objeto que contiene el conteo, la suma, el mínimo, el máximo y el promedio calculados en una sola pasada.
mapToInt
Convierte un Stream<T> en un IntStream usando una ToIntFunction.
Optional.of
Crea un Optional que contiene un valor no null; lanza NullPointerException si el valor es null.
Optional.ofNullable
Crea un Optional que está vacío si el valor es null y lleno en caso contrario.
orElse
Devuelve el valor o un valor alternativo; la expresión alternativa se evalúa siempre.
orElseGet
Devuelve el valor o llama a un Supplier para producir un valor alternativo solo cuando está vacío.
orElseThrow
Devuelve el valor o lanza una excepción: NoSuchElementException sin argumento, o la excepción proporcionada.
Gatherer
Un objeto que describe una operación intermedia de stream personalizada mediante un inicializador, un integrador, un combinador y un finalizador.
windowFixed
Un gatherer integrado que agrupa los elementos en listas de tamaño fijo sin solaparse, con una última lista posiblemente más corta.
windowSliding
Un gatherer integrado que emite listas solapadas de tamaño fijo, avanzando un elemento a la vez.
fold
Un gatherer integrado que combina todos los elementos en un solo resultado emitido cuando termina el stream.
scan
Un gatherer integrado que emite el resultado acumulado después de cada elemento, como una suma acumulativa.
Parallel stream (stream paralelo)
Un stream cuyas operaciones se ejecutan en varios hilos, por defecto en el ForkJoinPool común.
forEachOrdered
Una operación terminal que procesa los elementos en orden de recorrido incluso en un stream paralelo.
Associative operation (operación asociativa)
Una operación donde la agrupación no importa, (a op b) op c = a op (b op c), requerida para un reduce paralelo correcto.
Stateful lambda (lambda con estado)
Una lambda que lee o modifica estado mutable compartido durante la ejecución del stream, lo cual es inseguro en paralelo.

Dominio 7: Packaging and deploying Java code (7%)

Consejos para el examen

Términos clave

module-info.java
El archivo de declaración del módulo en la raíz de sus fuentes, que nombra el módulo y sus directivas.
requires transitive
Declara una dependencia y la hace legible para todo módulo que requiera este módulo (legibilidad implícita).
exports
Hace que los tipos públicos de un paquete sean accesibles para otros módulos; opcionalmente limitado con una cláusula to.
opens
Permite la reflexión profunda en tiempo de ejecución, incluidos los miembros private, sobre un paquete sin conceder acceso en tiempo de compilación.
Strong encapsulation (encapsulamiento fuerte)
La regla según la cual los paquetes no exportados son inaccesibles para otros módulos aunque sus clases sean public.
Service interface (interfaz de servicio)
El tipo, normalmente una interfaz en un paquete exportado, del que dependen los consumidores y que implementan los proveedores.
uses
Una directiva de módulo en el consumidor que declara que busca implementaciones de un servicio con ServiceLoader.
provides ... with
Una directiva de módulo en el proveedor que nombra la interfaz del servicio y la clase de implementación que lo proporciona.
ServiceLoader
La clase que descubre e instancia proveedores de servicios en tiempo de ejecución mediante load, iteración, findFirst o stream.
ServiceLoader.Provider
Un manejador de un proveedor que expone type() sin instanciarlo y get() para crear la instancia.
Module path
La lista de ubicaciones donde se buscan módulos, establecida con --module-path o -p, donde se aplican las reglas de los módulos.
Named module (módulo con nombre)
Un módulo con module-info.class en el module path que lee solo lo que requiere y expone solo lo que exporta.
Automatic module (módulo automático)
Un JAR no modular en el module path; recibe un nombre derivado, exporta todos sus paquetes y lee todos los módulos.
Unnamed module (módulo sin nombre)
El módulo que contiene todo el código del class path; lo lee todo y lo exporta todo, pero no puede requerirse.
Automatic-Module-Name
Un atributo del manifiesto que establece un nombre estable para un JAR usado como módulo automático.
--module-path (-p)
La opción de javac y java que lista los directorios o JARs que contienen módulos.
--module (-m)
La opción de java que nombra el módulo a ejecutar, opcionalmente con /MainClass.
--describe-module (-d)
Una opción de java que imprime el descriptor de un módulo; no es lo mismo que el directorio de salida -d de javac.
--module-source-path
Una opción de javac para compilar varios módulos a la vez desde un árbol de fuentes con una carpeta por módulo.
--list-modules
Una opción de java que lista los módulos observables y sus versiones.
Module import declaration (declaración import module)
import module M; que importa bajo demanda todos los tipos public de nivel superior de los paquetes que exporta M, incluidos los de sus dependencias transitivas.
Ambiguous simple name (nombre simple ambiguo)
Un nombre de tipo que dos imports proporcionan desde paquetes distintos; usarlo sin calificar es un error de compilación.
Shadowing (ocultamiento)
Cuando un import o una declaración más específicos ocultan un nombre que de otro modo proporcionaría un import más amplio.
Single-type import (import de un solo tipo)
Un import que nombra una clase, como import java.util.List;, que tiene prioridad sobre los imports bajo demanda y de módulo.
Instance main method (método main de instancia)
Un método main no estático, con o sin parámetro String[], que el launcher llama sobre una instancia recién creada.
Compact source file (archivo fuente compacto)
Un archivo fuente con campos y métodos de nivel superior no encerrados en una clase, que el compilador envuelve en una clase final implícita.
Implicitly declared class (clase declarada implícitamente)
La clase final del paquete sin nombre que el compilador crea para un archivo fuente compacto; el código no puede referirse a ella por su nombre.
java.lang.IO
Una clase con utilidades estáticas de consola print, println y readln, disponible sin import.
Source-file mode (modo de archivo fuente)
Ejecutar java con el nombre de un archivo .java para que el launcher compile el código fuente en memoria y lo ejecute sin escribir archivos class.
Multi-file source program (programa fuente de varios archivos)
Un programa en modo fuente cuyas otras clases se encuentran como archivos .java bajo el directorio del archivo lanzado y se compilan bajo demanda.
--source
Una opción del launcher que establece la versión del lenguaje para el modo fuente; obligatoria para archivos que no terminan en .java.
Shebang file (archivo shebang)
Un script ejecutable cuya primera línea empieza con #! y nombra el launcher java, ejecutado directamente por el sistema operativo.
jar
La herramienta del JDK que crea, lista, extrae y actualiza archivos JAR y puede registrar una clase principal.
jdeps
El analizador de dependencias del JDK que informa de las dependencias de paquetes y módulos y del uso de APIs internas.
jlink
La herramienta del JDK que ensambla módulos con nombre y sus dependencias en una imagen de runtime personalizada.
Runtime image (imagen de runtime)
Un directorio autocontenido con una JVM y solo los módulos que necesita una aplicación.
Manifest (manifiesto)
El archivo META-INF/MANIFEST.MF dentro de un JAR que contiene metadatos como Main-Class.

Dominio 8: Managing concurrent code execution (9%)

Consejos para el examen

Términos clave

Runnable
Una interfaz funcional con void run() que representa una tarea sin resultado y sin excepciones checked.
Thread.Builder
Una API fluida, obtenida con Thread.ofPlatform() o Thread.ofVirtual(), para configurar y crear hilos.
unstarted
Un método de Thread.Builder que crea un hilo configurado sin iniciarlo.
Daemon thread (hilo daemon)
Un hilo en segundo plano que no impide que la JVM termine.
join
Un método de Thread que hace que quien llama espere hasta que ese hilo termine.
Platform thread (hilo de plataforma)
Un hilo de Java respaldado uno a uno por un hilo del sistema operativo durante toda su vida.
Virtual thread (hilo virtual)
Un hilo ligero gestionado por la JVM que se desmonta de su portador mientras está bloqueado para que el portador pueda ejecutar otro trabajo.
Carrier thread (hilo portador)
Un hilo de plataforma sobre el que la JVM monta los hilos virtuales para ejecutarlos.
newVirtualThreadPerTaskExecutor
Un método de fábrica de Executors que devuelve un ExecutorService que inicia un hilo virtual nuevo por cada tarea.
Pinning (fijación)
Un estado en el que un hilo virtual bloqueado no puede desmontarse de su portador, lo que reduce la escalabilidad.
Callable<V>
Una interfaz de tarea con V call() throws Exception, que devuelve un resultado y puede lanzar excepciones checked.
Future<V>
Un manejador de un resultado pendiente, con get, get con timeout, isDone y cancel.
ExecutionException
La excepción checked que lanza Future.get cuando la propia tarea lanzó una excepción; la excepción original es su causa.
shutdown
Hace que un executor deje de aceptar tareas nuevas mientras permite que terminen las enviadas, sin esperar.
awaitTermination
Se bloquea hasta que todas las tareas terminan después del shutdown o hasta que vence un timeout, y devuelve si terminó.
Thread.State
El enum de los estados de un hilo: NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING y TERMINATED.
BLOCKED
El estado de un hilo que espera adquirir un lock de monitor para un bloque o método synchronized.
TIMED_WAITING
El estado de un hilo que espera con un límite de tiempo, como en sleep o join con timeout.
IllegalThreadStateException
Se lanza cuando se llama a start() sobre un hilo que ya fue iniciado.
Interrupt (interrupción)
Una señal cooperativa que activa la bandera de interrupción de un hilo y lo despierta de sleep, wait o join con InterruptedException.
Race condition (condición de carrera)
Un error en el que el resultado depende del momento en que los hilos acceden a datos mutables compartidos.
Intrinsic lock (monitor) (lock intrínseco)
El lock integrado en todo objeto, que adquieren los bloques y métodos synchronized.
synchronized method (método synchronized)
Un método cuyo cuerpo se ejecuta mientras se tiene el lock de this, o del objeto Class en los métodos estáticos.
Visibility (visibilidad)
Si se garantiza que las lecturas de otro hilo verán una escritura hecha por un hilo.
volatile
Un modificador de campo que garantiza la visibilidad y el orden de las lecturas y escrituras, pero no la atomicidad de las operaciones compuestas.
AtomicInteger
Un envoltorio de int con operaciones atómicas sin locks como incrementAndGet y compareAndSet.
Compare-and-swap (CAS)
Una operación atómica de hardware que actualiza un valor solo si todavía es igual a un valor esperado.
ReentrantLock
Una implementación explícita de Lock que el hilo que la tiene puede volver a adquirir, y que se libera con las llamadas unlock correspondientes.
tryLock
Un método de Lock que intenta adquirir el lock sin bloquearse, o dentro de un timeout, y devuelve si tuvo éxito.
IllegalMonitorStateException
Se lanza cuando un hilo libera un lock que no tiene.
ConcurrentHashMap
Un map seguro para hilos que permite lecturas y escrituras concurrentes, con iteradores débilmente consistentes y sin claves ni valores null.
CopyOnWriteArrayList
Una lista segura para hilos que copia su arreglo en cada escritura; los iteradores usan una instantánea y nunca lanzan ConcurrentModificationException.
BlockingQueue
Una cola cuyos métodos put y take esperan espacio o elementos, usada para el traspaso productor-consumidor.
Weakly consistent iterator (iterador débilmente consistente)
Un iterador que tolera modificaciones concurrentes sin lanzar excepciones y puede reflejar o no los cambios hechos después de su creación.
Deadlock (interbloqueo)
Dos o más hilos que esperan para siempre cada uno un lock que tiene otro, formando un ciclo.
Starvation (inanición)
A un hilo se le niega perpetuamente el acceso a un recurso que necesita porque otros hilos lo siguen obteniendo.
Livelock
Los hilos siguen activos, respondiéndose repetidamente unos a otros, pero no avanzan.
Lock ordering (orden de locks)
Una técnica de prevención en la que todos los hilos adquieren varios locks en el mismo orden global.
Thread dump (volcado de hilos)
Una instantánea del estado y la pila de cada hilo, usada para encontrar deadlocks e hilos bloqueados.
ScopedValue
Un valor enlazado durante la duración de una llamada y legible por todo el código del alcance dinámico de esa llamada, que luego se desenlaza automáticamente.
ScopedValue.where
Crea un enlace entre una clave de scoped value y un valor, seguido de run o call para ejecutar código con él.
Dynamic scope (alcance dinámico)
El conjunto de código ejecutado durante una llamada, incluidos los métodos llamados indirectamente, donde un enlace es visible.
ThreadLocal
Una variable con un valor mutable distinto por hilo que persiste hasta que se elimina.
Rebinding (reenlace)
Enlazar un scoped value ya enlazado a un valor nuevo en una llamada anidada where(...).run(...).

Dominio 9: Using the Java I/O API (6%)

Consejos para el examen

Términos clave

Path
Una interfaz que representa una ubicación del sistema de archivos como una secuencia de elementos de nombre, opcionalmente con una raíz.
resolve
Une una ruta con otra; devuelve el argumento sin cambios si el argumento es absoluto.
relativize
Construye una ruta relativa de una ruta a otra; ambas deben ser absolutas o ambas relativas.
normalize
Elimina los elementos . y los pares nombre/.. mediante lógica de texto sin acceder al sistema de archivos.
toRealPath
Devuelve la ruta real con los enlaces resueltos, y lanza IOException si el archivo no existe.
Files.createDirectories
Crea un directorio y todos los padres que falten, sin fallar si el directorio ya existe.
FileAlreadyExistsException
Se lanza cuando una operación crearía o sobrescribiría una ruta que ya existe sin permiso para reemplazarla.
REPLACE_EXISTING
Una StandardCopyOption que permite a copy o move sobrescribir un destino existente.
ATOMIC_MOVE
Una opción de move que pide un movimiento de todo o nada, y falla si el sistema de archivos no puede garantizarlo.
DirectoryNotEmptyException
Se lanza al intentar eliminar un directorio que todavía contiene entradas.
Files.readAllLines
Lee un archivo entero en un List<String>, un elemento por línea, y cierra el archivo.
Files.lines
Devuelve un Stream<String> de las líneas del archivo, llenado de forma perezosa, que debe cerrarse después de usarse.
Files.writeString
Escribe un CharSequence en un archivo, por defecto creándolo o truncando el contenido existente.
StandardOpenOption.APPEND
Una opción de apertura que escribe al final de un archivo existente en lugar de reemplazar su contenido.
UncheckedIOException
Un envoltorio unchecked de una IOException, usado cuando la E/S falla dentro del procesamiento de un stream.
Files.list
Devuelve un Stream<Path> perezoso de las entradas directas de un directorio, sin recursión.
Files.walk
Devuelve un Stream<Path> perezoso, en profundidad, de un árbol de directorios, incluida la ruta de inicio, opcionalmente limitado por maxDepth.
Files.find
Recorre un árbol hasta un maxDepth obligatorio y devuelve las rutas que cumplen un BiPredicate<Path, BasicFileAttributes>.
BasicFileAttributes
Una interfaz que expone el tamaño, las marcas de tiempo y el tipo de archivo leídos junto con la entrada del directorio.
FOLLOW_LINKS
Una FileVisitOption que hace que walk y find sigan los enlaces simbólicos.
Byte stream (stream de bytes)
Un InputStream u OutputStream que transfiere bytes crudos, adecuado para datos binarios.
Character stream (stream de caracteres)
Un Reader o Writer que transfiere caracteres, decodificando y codificando bytes con un charset.
InputStreamReader
Un puente que envuelve un InputStream de bytes y lo decodifica en caracteres usando un charset.
BufferedReader
Un Reader que usa buffer para la entrada y proporciona readLine(), que devuelve null al final del archivo.
flush
Fuerza que cualquier salida en el buffer se escriba en el destino subyacente.
System.in
El stream de entrada estándar, un InputStream normalmente conectado al teclado.
System.err
El stream de error estándar, un PrintStream pensado para mensajes de error y de diagnóstico.
Console
Una clase obtenida de System.console() para entrada y salida de texto interactiva, que puede ser null cuando no está disponible.
readPassword
Un método de Console que lee la entrada sin mostrarla y devuelve un arreglo de char.
printf
Un método que escribe salida con formato usando especificadores como %s, %d, %.2f y %n.
Serializable
Una interfaz marcadora que permite que las instancias de una clase se escriban y lean mediante streams de objetos.
transient
Un modificador de campo que excluye el campo de la serialización; se restaura con su valor por defecto.
serialVersionUID
Un identificador de versión private static final long que se comprueba durante la deserialización para detectar versiones de clase incompatibles.
NotSerializableException
Se lanza en tiempo de ejecución al escribir un objeto que tiene un campo no transient cuyo tipo no es serializable.
ObjectInputFilter
Un mecanismo para restringir qué clases y cuántos datos pueden deserializarse, usado para defenderse de entradas inseguras.
try-with-resources
Una sentencia try que declara recursos AutoCloseable y los cierra automáticamente en orden inverso.
AutoCloseable
Una interfaz con close() throws Exception, requerida para los recursos de try-with-resources.
Closeable
Una interfaz de E/S que extiende AutoCloseable con close() throws IOException.
Suppressed exception (excepción suprimida)
Una excepción lanzada al cerrar un recurso después de que el cuerpo ya lanzó otra, adjuntada a la original mediante addSuppressed.
Resource-backed stream (stream respaldado por un recurso)
Un Stream como los de Files.lines, list, walk o find que mantiene un manejador abierto y debe cerrarse.

Dominio 10: Implementing localization (4%)

Consejos para el examen

Términos clave

Locale
Un objeto que identifica un idioma y opcionalmente un país y una variante, usado por las clases sensibles a la configuración regional.
Language code (código de idioma)
Un código ISO 639 en minúsculas, como en o fr, que forma la primera parte de un locale.
Country code (código de país)
Un código ISO 3166 en mayúsculas, como US o CA, que identifica la región de un locale.
Locale.of
El método de fábrica para crear un Locale a partir de un idioma y opcionalmente un país y una variante.
Default locale (locale por defecto)
El locale que usa la JVM cuando no se indica ninguno, inicializado desde el sistema operativo y modificable con Locale.setDefault.
Resource bundle
Un conjunto de recursos clave-valor específicos de un locale, cargados por nombre base y locale con ResourceBundle.getBundle.
Base name (nombre base)
El prefijo común de una familia de bundles, como Messages, al que se agregan sufijos de locale como _fr_CA.
Default (base) bundle (bundle base)
El archivo de bundle sin sufijo de locale, usado como respaldo final y raíz de toda cadena de padres.
Parent chain (cadena de padres)
La secuencia de bundles menos específicos, como fr_CA a fr a base, en la que se busca una clave que falta en el bundle elegido.
MissingResourceException
Una excepción unchecked que se lanza cuando no se encuentra ningún bundle o cuando una clave falta en el bundle y en sus padres.
NumberFormat
Una clase abstracta sensible al locale para formatear y analizar números, obtenida mediante métodos de fábrica.
getCurrencyInstance
Devuelve un NumberFormat que formatea valores como moneda para un locale, con su símbolo y sus decimales estándar.
HALF_EVEN
El modo de redondeo por defecto que redondea las mitades exactas al dígito par más cercano.
ParseException
Una excepción checked que se lanza cuando un texto no puede analizarse como número o fecha.
DecimalFormat
Un NumberFormat concreto que formatea usando un patrón de símbolos 0, #, coma y punto.
CompactNumberFormat
Una subclase de NumberFormat que formatea números en formas cortas específicas del locale, como 1K o 1 thousand.
NumberFormat.Style.SHORT
El estilo compacto que usa sufijos abreviados como K, M y B en inglés de EE. UU.
NumberFormat.Style.LONG
El estilo compacto que escribe la magnitud completa, como thousand o million.
getCompactNumberInstance
El método de fábrica de NumberFormat que devuelve un formateador compacto para un locale y un estilo.
DateTimeFormatter
Una clase inmutable y segura para hilos que formatea y analiza valores de java.time usando constantes ISO, estilos localizados o patrones.
FormatStyle
Un enum de SHORT, MEDIUM, LONG y FULL usado para disposiciones de fecha y hora específicas del locale.
ofPattern
Crea un formateador a partir de letras de patrón como yyyy-MM-dd HH:mm, opcionalmente con un Locale.
DateTimeParseException
Una excepción unchecked que se lanza cuando un texto no puede analizarse como fecha u hora.
UnsupportedTemporalTypeException
Se lanza cuando el formateo requiere un campo que el valor no tiene, como las horas en un LocalDate.
MessageFormat
Una clase de java.text que construye mensajes sensibles al locale sustituyendo argumentos en marcadores indexados.
Placeholder (marcador)
Un elemento {n} en un patrón que se reemplaza por el argumento n, opcionalmente con un tipo de formato como number o date.
Format type (tipo de formato)
La segunda parte de un marcador, como number, date, time o choice, que controla cómo se formatea el argumento.
Quoting (comillas)
En MessageFormat, una comilla simple inicia una sección literal; dos comillas simples producen un apóstrofo.
ChoiceFormat
Un formato usado mediante el tipo choice que selecciona el texto según rangos numéricos, útil para plurales simples.
Estudia OCP Java gratis
Plan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.
Abrir el plan de estudio