OCP Java / Lecciones en español · English
Lecciones de OCP Java 1Z0-831 (Java SE 25)
- Tipos primitivos, literales (guiones bajos, binario/hex/octal) y valores por defecto
- Clases envoltorio, autoboxing/unboxing y la caché de Integer con ==
- Precedencia de operadores, incremento/decremento y asignación compuesta con casts implícitos
- Conversiones de ensanchamiento y estrechamiento, casting y reglas de promoción numérica
- API de Math: round, floor, ceil, abs, max/min, pow
- Inmutabilidad de String y métodos clave: substring, indexOf, charAt, strip, repeat, isBlank
- Métodos de StringBuilder: append, insert, reverse, delete, replace
- Bloques de texto: espacio en blanco incidental, continuación de línea con \ y el escape \s
- API de fecha y hora: LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant
- Period frente a Duration y los cambios de horario de verano
- if/else y el operador ternario
- Sentencias switch clásicas, fall-through y break
- Expresiones switch con etiquetas de flecha, múltiples etiquetas y yield
- Pattern matching en switch: patrones de tipo, patrones de record y guardas when
- Dominancia de cases y exhaustividad (enums, tipos sellados, default)
- Bucles while, do-while, for y for mejorado
- break y continue, incluidas las sentencias etiquetadas
- Código inalcanzable y errores de compilación por asignación definida
- Clases, campos, métodos, constructores, bloques inicializadores y orden de inicialización
- Cuerpos de constructor flexibles (Java 25): sentencias antes de super(...) o this(...)
- Herencia, sobrescritura vs sobrecarga vs ocultamiento, polimorfismo y casting
- Clases abstractas e interfaces: métodos default, static y private en interfaces
- Records: componentes, constructores canónico y compacto, accesores, equals/toString
- Clases e interfaces sealed: permits y subclases final, sealed y non-sealed
- Enums con campos, constructores, métodos y values()/valueOf()/ordinal()
- Clases anidadas, internas, locales y anónimas
- Pattern matching con instanceof y alcance por flujo
- Encapsulamiento, objetos inmutables e inferencia de tipos locales con var
- Ciclo de vida de los objetos y elegibilidad para la recolección de basura
- Excepciones checked vs unchecked y la jerarquía de Throwable
- Flujo de try/catch/finally, incluido return en try y en finally
- Reglas del multi-catch: sin tipos relacionados; la variable del catch es efectivamente final
- Orden de los bloques catch y errores de compilación por catch inalcanzable
- try-with-resources, AutoCloseable y cierre en orden inverso
- Excepciones suprimidas y Throwable.getSuppressed()
- Declarar excepciones con throws y reglas de sobrescritura
- Crear excepciones personalizadas checked y unchecked
- Declarar, crear y copiar arreglos; Arrays.sort, binarySearch, compare, mismatch
- Interfaces List, Set, Map, Queue y Deque y sus principales implementaciones
- Colecciones no modificables: comportamiento de List.of, Set.of, Map.of y Arrays.asList
- Colecciones secuenciadas: getFirst, getLast, addFirst, reversed
- Métodos de Map: merge, computeIfAbsent, getOrDefault, putIfAbsent
- Ordenar con Comparable y Comparator (comparing, thenComparing, reversed)
- Orden natural en TreeSet y TreeMap
- Genéricos: parámetros de tipo, tipos acotados y comodines (? extends, ? super)
- List.remove(int) vs remove(Object) con listas de Integer
- Interfaces funcionales en java.util.function: Supplier, Consumer, Function, Predicate, UnaryOperator, BinaryOperator
- Sintaxis de lambdas, referencias a métodos y variables efectivamente final
- Crear streams: colecciones, Stream.of, IntStream.range/rangeClosed, Stream.iterate
- Operaciones intermedias y evaluación perezosa: filter, map, flatMap, peek, sorted, distinct, limit
- Operaciones terminales: forEach, reduce, collect, count, findFirst, anyMatch, toList
- Collectors: groupingBy, partitioningBy, counting, joining, toMap y funciones de fusión
- Streams primitivos y estadísticas resumidas
- Optional: of, ofNullable, map, orElse, orElseGet, orElseThrow
- Stream Gatherers (Java 24+): gather() con Gatherers.windowFixed, windowSliding, fold, scan
- Streams paralelos y por qué las lambdas con estado causan problemas
- Module-info.java: module, requires, requires transitive, exports, opens
- Servicios: uses, provides ... with y ServiceLoader
- Module path vs class path; módulos con nombre, automáticos y sin nombre
- Compilar y ejecutar módulos con javac --module-path y java --module
- Declaraciones import module (Java 25): import module y reglas de ambigüedad
- Archivos fuente compactos y métodos main de instancia (Java 25), java.lang.IO
- Lanzar programas de código fuente de uno o varios archivos con el launcher java
- Herramientas del JDK: jar, jdeps, jlink
- Crear hilos con Runnable, Thread y la API Thread.Builder
- Hilos de plataforma vs hilos virtuales; Executors.newVirtualThreadPerTaskExecutor()
- ExecutorService, Callable y Future; shutdown, awaitTermination, close()
- Ciclo de vida de los hilos y start() vs run()
- Condiciones de carrera, bloques y métodos synchronized, y visibilidad
- Clases atómicas (AtomicInteger, AtomicLong) y locks (ReentrantLock, tryLock)
- Colecciones concurrentes: ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue
- Deadlock, inanición (starvation) y livelock
- Scoped values (Java 25): ScopedValue.where(...).run(...) como alternativa a ThreadLocal
- Creación y operaciones de Path: resolve, relativize, normalize, getFileName, getParent
- Métodos de Files: exists, createDirectory vs createDirectories, copy, move, delete
- Leer y escribir texto con Files.readAllLines, Files.lines, Files.writeString
- Recorrer árboles de archivos: Files.list vs Files.walk vs Files.find
- Streams de bytes y de caracteres, BufferedReader y BufferedWriter
- Console y entrada/salida estándar
- Serialización: Serializable, campos transient, serialVersionUID
- Cerrar recursos y métodos de Files que devuelven streams
- Objetos Locale: idioma, país, Locale.of y Locale.getDefault
- Resource bundles: archivos properties, nombres y orden de búsqueda/respaldo
- Formatear números y monedas con NumberFormat
- Formato de números compacto (CompactNumberFormat)
- Formatear y analizar fechas y horas con DateTimeFormatter y locales
- Formatear mensajes con MessageFormat