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
- 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