Java SE
- Introdução
- Fundamentos
- Estrutura de um programa
- Variáveis e constantes
- Tipos de dados
- Entrada e saída de dados no console
- Operações aritméticas
- Operadores Bit a Bit
- Operadores de comparação e lógicos
- Operadores de Atribuição e sua Precedência
- Conversões de Tipos Primitivos
- Estruturas Condicionais
- Estruturas de Repetição
- Arrays
- Introdução aos Métodos
- Parâmetros e Argumentos em Métodos
- Retornando Valores de Métodos com a Instrução return
- Sobrecarga de Métodos
- Métodos Recursivos
- Strings
- Programação Orientada a Objetos
- Classes e Objetos
- Organização de Código: Pacotes e a Diretiva import
- Encapsulamento e Modificadores de Acesso
- Membros Estáticos: O Modificador static
- Objetos como Parâmetros
- Classes Internas e Aninhadas
- Herança
- Classes Abstratas
- Hierarquia, Herança e Conversão de Tipos
- Interfaces
- Interfaces e Callbacks
- Enum
- Classe Object e seus métodos
- Generics
- Restrições de Generics
- Herança de Generics
- Tipos por Referência e Cópia de Objetos
- Records
- Arquivos compactos e método main
- Controle de Hierarquias com Classes e Interfaces sealed
- Pattern Matching para Tipos
- Pattern Matching com Records
- Coleções
- Tipos de Coleções e a Interface Collection
- List e ArrayList
- Filas (Queue), Deques e a Classe ArrayDeque
- A Classe LinkedList
- Interface Set e Classe HashSet
- Coleções Ordenadas: SortedSet, NavigableSet e TreeSet
- Ordenando Objetos: Interfaces Comparable e Comparator
- Interface Map e Classe HashMap
- Interfaces SortedMap e NavigableMap. Classe TreeMap
- Iteradores
- Expressões Lambda
- Tratamento de Erros
- Programação Multithread
- A Classe Thread
- Criação e Execução de Threads
- Finalização e Interrupção de Threads
- Sincronização de Threads: O Bloco e Método synchronized
- Coordenação entre Threads: Os Métodos wait() e notify()
- Controle de Acesso com Semáforos
- Sincronização da Troca de Dados entre Threads: A Classe Exchanger
- Sincronização de Threads em Fases com Phaser
- Sincronização Explícita com ReentrantLock
- A Interface Condition e Bloqueios ReentrantLock
- Trabalhando com arquivos
- Streams de Entrada e Saída
- Leitura e Escrita de Arquivos com FileInputStream e FileOutputStream
- Fechamento de Streams
- Classes ByteArrayInputStream e ByteArrayOutputStream
- Streams de Buffer: BufferedInputStream e BufferedOutputStream
- Saída Formatada com PrintStream e PrintWriter
- Streams de Dados Primitivos: DataOutputStream e DataInputStream
- Leitura e Escrita de Arquivos de Texto com FileReader e FileWriter
- Buffering de Streams de Caracteres com BufferedReader e BufferedWriter
- Serialização de Objetos com ObjectOutputStream e ObjectInputStream
- Gerenciando Arquivos e Diretórios com a Classe File e a API NIO
- Manipulando Arquivos ZIP com ZipOutputStream e ZipInputStream
- Interagindo com o Console Usando a Classe Console
- Stream API
- Introdução à Stream API
- Criação de Streams
- Métodos filter, map e forEach
- Ordenação de Dados
- Métodos: Sub-fluxos, Concatenação e Elementos Únicos
- Métodos: skip e limit
- Métodos de Agregação
- O Método reduce
- O Tipo Optional
- Transformação de Streams em Coleções com o Método collect
- Agrupamento de Dados com Collectors.groupingBy
- Streams Paralelos
- Métodos Paralelos em Arrays em Java
- Modularidade
- Outras Classes
- Arquivos JAR - Integração com Bibliotecas
- Reflection
- Reflection: Explorando Tipos com a Classe Class
- Visão Geral dos Membros: Fields, Methods e Constructors
- Manipulando Campos com a Classe Field
- Modificadores de Campos e Métodos com Reflection
- Trabalhando com Construtores usando a Classe Constructor
- Trabalhando com Métodos usando a Classe Method
- Criação de Objetos Dinâmicos com Proxy