
Length41h 55m
About this audiobook
Prefácio "Algumas pessoas pensam que são educadas só porque ainda usam palavras e não punhos." No começo era a palavra. Muito mais tarde, em 23 de maio de 1995, no SunWorld em San Francisco, o chefe do então Science Office da Sun Microsystems, John Gage, e o co-fundador da Netscape, Marc Andreessen, introduziram a nova linguagem de programação Java com sua integração no navegador Netscape. Este evento foi o início da procissão triunfal de uma linguagem que oferece maneiras elegantes de programar em qualquer plataforma e de expressar seus pensamentos de maneira orientada a objetos (OO). As possibilidades da linguagem e suas bibliotecas não são nada novas em si mesmas, mas foram empacotadas tão bem que o Java é agradável e fluido para programação. Java é agora uma das linguagens de programação mais populares do planeta. Em seus 23 capítulos, este livro trata da tecnologia Java com foco intenso na linguagem de programação Java. Tópicos importantes incluem programação orientada a objetos (OOP), design de classes e a estrutura das bibliotecas padrão de Java. Grupo alvo Os capítulos deste livro são projetados para iniciantes na linguagem de programação Java, bem como para usuários avançados. O conhecimento básico de uma linguagem de programação estruturada, como C, Python, JavaScript ou Visual Basic, e o conhecimento de OOP são úteis porque o livro não aborda explicitamente arquiteturas de computador ou o que realmente é programação. Então, se você já programou em alguma linguagem, este livro é para você! O que este livro não é Este livro não deve ser considerado um livro de programação para iniciantes. Se você nunca programou antes e associa a palavra "tradução" principalmente a "interpretação", você deve começar com um tutorial básico ou seguir um em paralelo. Muitas áreas da vida de um programador industrial são abordadas neste livro em profundidade geral, mas este livro não pode substituir a Java Language Specification (JLS). As tecnologias Java explodiram nos últimos anos, de modo que sua capacidade de gerenciamento inicial deu lugar a uma forte especialização. Hoje, não é possível cobrir tudo em um livro, e certamente não almejaremos esse objetivo com este. Um livro que trata especificamente da interface gráfica do usuário (GUI) JavaFX ou Swing — ambas partes do Java padrão — pode ser tão extenso quanto o livro que você tem em mãos. Outros tópicos especiais incluem análise/design OO, Unified Modeling Language (UML), programação paralela ou distribuída, Enterprise JavaBeans (EJBs), conectividade de banco de dados, mapeamento objeto-relacional, serviços da web, páginas da web dinâmicas e muitos outros tópicos. Para todos esses tópicos, livros específicos podem ser necessários para satisfazer sua curiosidade. Este livro Java treina você na sintaxe da linguagem de programação, no manuseio de importantes bibliotecas padrão, ferramentas de desenvolvimento e ambientes de desenvolvimento, análise e projeto OO, padrões de projeto e convenções de programa. Mas este livro não pode ajudá-lo a impressionar os geeks legais de TI em uma festa. Desculpe.
Audiobook details
GenreTechnology
Length41 hrs 55 mins
Narrated byListen with 1,000+ voices
FormateBook with Audio
Publish dateDec 27, 2022
LanguagePortuguese
Table of contents
1Java O guia completo
8251.4 Desenvolvimento e perdas posteriores
21. Introdução
8261.4.1 O Desenvolvimento de Java e Suas Perspectivas Futuras
31.1 Antecedentes Históricos
8271.4.2 Recursos, aprimoramentos e solicitações de especificação
41.2.1 Código de bytes
8281.4.3 Miniaplicativos
51.2.2 Executando o Bytecode via Máquina Virtual
8291.4.4 Java FX
Show all chaptersShow less
61.2.3 Independência da plataforma
8301.5 Plataformas Java
71.2.8 Ponteiros e Referências
8311.5.1 Plataforma Java, Edição Padrão
81.2.9 Retire o Lixo, Coletor de Lixo!
8321.5.2 Plataforma Java, Micro Edition: Java para os mais pequenos
91.2.10 Tratamento de Exceções
8331.5.3 Java para os pequenininhos
101.2.11 A gama de bibliotecas e ferramentas
8341.5.4 Java para os grandes: Jakarta EE (anteriormente Java Platform, Enterprise Edition)
111.2.12 Sintaxe comparativamente simples
8351.5.5 Java em tempo real
121.2.13 Abandonando Conceitos Controversos
8361.6 Plataforma Java, Standard Edition, Implementações
131.4 Desenvolvimento e perdas adicionais
8371.6.1 OpenJDK
141.4.2 Recursos, aprimoramentos e solicitações de especificação
8381.6.2 Oracle JDK
151.4.3 Miniaplicativos
8391.7 Instalando o Java Development Kit: 1.7.1 Instalando o Oracle JDK no Windows
161.5.4 Java para os grandes: Jakarta EE (anteriormente Java Platform, Enterprise Edition)
8401.8 Compilando e Testando o Primeiro Programa
171.6.1 OpenJDK
8411.8.1 Um programa de números quadrados
181.6.2 Oracle JDK
8421.8.2 A execução do compilador
191.8 Compilando e Testando o Primeiro Programa
8431.8.3 O ambiente de tempo de execução
201.8.1 Um programa de números quadrados
8441.8.4 Problemas Comuns do Compilador e do Interpretador
211.8.2 A execução do compilador
8451.9 Ambientes de Desenvolvimento
221.8.3 O ambiente de tempo de execução
8461.9.1 IDEIA IntelliJ
231.8.4 Problemas Comuns do Compilador e do Interpretador
8471.9.2 Ambiente de Desenvolvimento Integrado Eclipse
241.9 Ambientes de Desenvolvimento
8481.9.3 NetBeans
251.9.1 IDEIA IntelliJ
8491.10 Leitura adicional
261.9.2 Ambiente de Desenvolvimento Integrado Eclipse
8502 Conceitos Imperativos de Linguagem
271.9.3 NetBeans
8512.1 Elementos da Linguagem de Programação Java
281.10 Leitura adicional
8522.1.1 Tokens
292 Conceitos Imperativos de Linguagem
8532.1.2 Codificação de Texto por Caracteres Unicode
302.1.1 Tokens
8542.1.3 Identificadores
312.1.2 Codificação de Texto por Caracteres Unicode
8552.1.4 Literais
322.1.3 Identificadores
8562.1.5 Palavras-chave (reservadas)
332.1.4 Literais
8572.1.6 Resumo da Análise Lexical
342.1.5 Palavras-chave (reservadas)
8582.1.7 Comentários
352.1.6 Resumo da Análise Lexical
8592.2 Das Classes às Instruções
362.1.7 Comentários
8602.2.1 O que são declarações?
372.2 Das Classes às Instruções
8612.2.2 Declaração de classe
382.2.1 O que são declarações?
8622.2.3 A jornada começa com main(String[])
392.2.2 Declaração de classe
8632.2.4 A primeira chamada de método: println(...)
402.2.3 A jornada começa com main(String[])
8642.2.5 Declarações Atômicas e Sequências de Afirmações
412.2.4 A primeira chamada de método: println(...)
8652.2.6 Mais informações sobre print(...), println(...) e printf(...) para saída de tela
422.2.5 Declarações Atômicas e Sequências de Afirmações
8662.2.7 Documentação da Interface de Programação de Aplicativos
432.2.6 Mais informações sobre print(...), println(...) e printf(...) para saída de tela
8672.2.8 Expressões
442.2.7 Documentação da Interface de Programação de Aplicativos
8682.2.9 Declarações de expressão
452.2.8 Expressões
8692.2.10 Primeiros insights sobre orientação a objetos
462.2.9 Declarações de expressão
8702.2.11 Modificadores
472.2.10 Primeiros insights sobre orientação a objetos
8712.2.12 Agrupando Instruções com Blocos
482.2.11 Modificadores
8722.3 Tipos de dados, tipagem, variáveis e atribuições
492.2.12 Agrupando Instruções com Blocos
8732.3.1 Visão geral dos tipos de dados primitivos
502.3 Tipos de dados, tipagem, variáveis e atribuições
8742.3.2 Declarações de Variáveis
512.3.1 Visão geral dos tipos de dados primitivos
8752.3.3 Detecção automática de tipo com var
522.3.2 Declarações de Variáveis
8762.3.4 Variáveis finais e o modificador final
532.3.3 Detecção automática de tipo com var
8772.3.5 Entradas do console
542.3.4 Variáveis finais e o modificador final
8782.3.6 Valores Verdadeiros
552.3.5 Entradas do console
8792.3.7 Tipos de dados inteiros
562.3.6 Valores Verdadeiros
8802.3.8 Sublinhados em Números
572.3.7 Tipos de dados inteiros
8812.3.9 Caracteres Alfanuméricos
582.3.8 Sublinhados em Números
8822.3.10 Tipos de dados float e double
592.3.9 Caracteres Alfanuméricos
8832.3.11 Nomes bons, nomes ruins
602.3.10 Tipos de dados float e double
8842.3.12 Sem inicialização automática de variáveis locais
612.3.11 Nomes bons, nomes ruins
8852.4 Expressões, Operandos e Operadores
622.3.12 Sem inicialização automática de variáveis locais
8862.4.1 Operador de Atribuição
632.4 Expressões, Operandos e Operadores
8872.4.2 Operadores Aritméticos
642.4.1 Operador de Atribuição
8882.4.3 Unário Menos e Mais
652.4.2 Operadores Aritméticos
8892.4.4 Incremento e Decremento de Prefixo ou Pós-fixo
662.4.3 Unário Menos e Mais
8902.4.5 Atribuição com Operação (Operador de Atribuição Composta)
672.4.4 Incremento e Decremento de Prefixo ou Pós-fixo
8912.4.6 Operadores Relacionais e Operadores de Igualdade
682.4.5 Atribuição com Operação (Operador de Atribuição Composta)
8922.4.7 Operadores Lógicos: NOT, AND, OR e XOR
692.4.6 Operadores Relacionais e Operadores de Igualdade
8932.4.8 Operadores de Curto-Circuito
702.4.7 Operadores Lógicos: NOT, AND, OR e XOR
8942.4.9 A Classificação dos Operadores na Ordem de Avaliação
712.4.8 Operadores de Curto-Circuito
8952.4.10 Typecasting (Fundição )
722.4.9 A Classificação dos Operadores na Ordem de Avaliação
8962.4.11 Overloaded Plus para Strings
732.4.10 Typecasting (Fundição)
8972.4.12 Operadores ausentes*
742.4.11 Overloaded Plus para Strings
8982.5 Declarações condicionais ou distinções de caso
752.4.12 Operadores ausentes*
8992.5.1 Ramificação com a instrução if
762.5 Declarações condicionais ou distinções de caso
9002.5.2 Escolhendo a alternativa com uma instrução if-else
772.5.1 Ramificação com a instrução if
9012.5.3 O operador de condição
782.5.2 Escolhendo a alternativa com uma instrução if-else
9022.5.4 A instrução switch fornece uma alternativa
792.5.3 O operador de condição
9032.5.5 Expressões de Troca
802.5.4 A instrução switch fornece uma alternativa
9042.6 Sempre o Mesmo com Loops
812.5.5 Expressões de Troca
9052.6.1 O loop while
822.6 Sempre o Mesmo com Loops
9062.6.2 O loop do-while
832.6.1 O loop while
9072.6.3 O loop for
842.6.2 O loop do-while
9082.6.4 Condições de loop e comparações com ==*
852.6.3 O loop for
9092.6.5 Terminação do Loop com break e volta ao Test com continue
862.6.4 Condições de loop e comparações com ==*
9102.6.6 interromper e continuar com etiquetas*
872.6.5 Terminação do Loop com break e volta ao Test com continue
9112.7 Métodos de uma Classe
882.6.6 interromper e continuar com etiquetas*
9122.7.1 Componentes de um Método
892.7 Métodos de uma Classe
9132.7.2 Descrição da assinatura na documentação da interface de programação de aplicativos Java
902.7.1 Componentes de um Método
9142.7.3 Chamando um Método
912.7.2 Descrição da assinatura na documentação da interface de programação de aplicativos Java
9152.7.4 Declarando Métodos sem Parâmetros
922.7.3 Chamando um Método
9162.7.5 Métodos Estáticos (Métodos de Classe )
932.7.4 Declarando Métodos sem Parâmetros
9172.7.6 Parâmetros, Argumentos e Transferências de Valores
942.7.5 Métodos Estáticos (Métodos de Classe)
9182.7.7 Métodos de finalização prematura com retorno
952.7.6 Parâmetros, Argumentos e Transferências de Valores
9192.7.8 Inacessível Código fonte para métodos*
962.7.7 Métodos de finalização prematura com retorno
9202.7.9 Métodos com Retornos
972.7.8 Código fonte inacessível para métodos*
9212.7.10 Métodos de sobrecarga
982.7.9 Métodos com Retornos
9222.7.11 Escopo
992.7.10 Métodos de sobrecarga
9232.7.12 Valores padrão para argumentos não listados*
1002.7.11 Escopo
9242.7.13 Métodos Recursivos*
1012.7.12 Valores padrão para argumentos não listados*
9252.7.14 Torres de Hanói*
1022.7.13 Métodos Recursivos*
9262.8 Leitura Adicional
1032.7.14 Torres de Hanói*
9273 Classes e Objetos
1042.8 Leitura Adicional
9283.1 Programação Orientada a Objetos
1053 Classes e Objetos
9293.1.1 Por que Programação Orientada a Objetos?
1063.1 Programação Orientada a Objetos
9303.1.2 Quando penso em Java, penso em reusabilidade
1073.1.1 Por que Programação Orientada a Objetos?
9313.2 Membros de uma Classe
1083.2 Membros de uma Classe
9323.3 Modelagem Natural Usando Linguagem de Modelagem Unificada*
1093.3 Modelagem Natural Usando Linguagem de Modelagem Unificada*
9333.4 Criando Novos Objetos
1103.4 Criando Novos Objetos
9343.4.1 Criando uma instância de uma classe usando a nova palavra-chave
1113.4.1 Criando uma instância de uma classe usando a nova palavra-chave
9353.4.2 Declarando Variáveis de Referência
1123.4.2 Declarando Variáveis de Referência
9363.4.3 Vamos direto ao ponto: Acessando métodos e variáveis de objeto
1133.4.3 Vamos direto ao ponto: Acessando métodos e variáveis de objeto
9373.4.4 A Conexão entre new, Heap e Garbage Collector
1143.4.4 A Conexão entre new, Heap e Garbage Collector
9383.4.5 Visão geral dos métodos pontuais
1153.4.5 Visão geral dos métodos pontuais
9393.4.6 Usando Construtores
1163.4.6 Usando Construtores
9403.5 ZZZZZnake
1173.5 ZZZZZnake
9413.6 Pacotes vinculados, importações e unidades de compilação
1183.6 Pacotes vinculados, importações e unidades de compilação
9423.6.1 Pacotes Java
1193.6.2 Pacotes na Biblioteca Padrão
9433.6.2 Pacotes na Biblioteca Padrão
1203.6.3 Qualificação Completa e Declaração de Importação
9443.6.3 Qualificação Completa e Declaração de Importação
1213.6.4 Alcançando todos os tipos de um pacote com Type-Import-on-Demand
9453.6.4 Alcançando todos os tipos de um pacote com Type-Import-on-Demand
1223.6.5 Estruturas hierárquicas entre pacotes e espelhamento no sistema de arquivos
9463.6.5 Estruturas hierárquicas entre pacotes e espelhamento no sistema de arquivos
1233.6.6 A Declaração da Embalagem
9473.6.6 A Declaração da Embalagem
1243.6.7 Pacote Sem Nome (Pacote Padrão)
9483.6.7 Pacote Sem Nome (Pacote Padrão)
1253.6.8 Unidade de Compilação
9493.6.8 Unidade de Compilação
1263.6.9 Importação Estática*
9503.6.9 Importação Estática*
1273.7 Uso de Referências, Diversidade, Identidade e Igualdade
9513.7 Uso de Referências, Diversidade, Identidade e Igualdade
1283.7.1 Referências nulas e a Questão da Filosofia
9523.7.1 Referências nulas e a Questão da Filosofia
1293.7.2 Tudo para null? Referências de teste
9533.7.2 Tudo para null? Referências de teste
1303.7.3 Atribuições com Referências
9543.7.3 Atribuições com Referências
1313.7.4 Métodos com Tipos de Referência como Parâmetros
9553.7.4 Métodos com Tipos de Referência como Parâmetros
1323.7.5 Identidade dos Objetos
9563.7.5 Identidade dos Objetos
1333.7.6 Equivalência e o método equals(...)
9573.7.6 Equivalência e o método equals(...)
1343.8 Leitura Adicional
9583.8 Leitura Adicional
1354 Arrays e suas áreas de uso
9594 Arrays e suas áreas de uso
1364.1 Trabalho de Campo Simples
9604.1 Trabalho de Campo Simples
1374.1.1 Componentes Básicos
9614.1.1 Componentes Básicos
1384.1.2 Declarando Variáveis de Array
9624.1.2 Declarando Variáveis de Array
1394.1.3 Criando Objetos Array com novos
9634.1.3 Criando Objetos Array com novos
1404.1.4 Arrays com { conteúdo }
9644.1.4 Arrays com { conteúdo }
1414.1.5 Lendo o Comprimento de um Array por meio do Object Variable Length
9654.1.5 Lendo o Comprimento de um Array por meio do Object Variable Length
1424.1.6 Acessando os Elementos por meio do Índice
9664.1.6 Acessando os Elementos por meio do Índice
1434.1.7 Erros Típicos de Array
9674.1.7 Erros Típicos de Array
1444.1.8 Passando Arrays para Métodos
9684.1.8 Passando Arrays para Métodos
1454.1.9 Múltiplos Valores de Retorno*
9694.1.9 Múltiplos Valores de Retorno*
1464.1.10 Arrays pré-inicializados
9704.1.10 Arrays pré-inicializados
1474.2 O Loop For Estendido
9714.2 O Loop For Estendido
1484.2.1 Usando Arrays Anônimos no Loop for Estendido
9724.2.1 Usando Arrays Anônimos no Loop for Estendido
1494.2.2 Exemplo: Pesquisando Arrays com Strings
9734.2.2 Exemplo: Pesquisando Arrays com Strings
1504.2.3 Criando posições de jogadores aleatórios
9744.2.3 Criando posições de jogadores aleatórios
1514.3 Um Método com Número Variável de Argumentos
9754.3 Um Método com Número Variável de Argumentos
1524.3.1 System.out.printf(...) Aceita Qualquer Número de Argumentos
9764.3.1 System.out.printf(...) Aceita Qualquer Número de Argumentos
1534.3.2 Encontrando a Média dos Argumentos Variáveis
9774.3.2 Encontrando a Média dos Argumentos Variáveis
1544.3.3 Dicas de Projeto Vararg*
9784.3.3 Dicas de Projeto Vararg*
1554.4 Matrizes Multidimensionais*: 4.4.1 Matrizes Não Retangulares*
9794.4 Matrizes Multidimensionais*: 4.4.1 Matrizes Não Retangulares*
1564.5 Suporte de biblioteca para arrays
9804.5 Suporte de biblioteca para arrays
1574.5.1 A clonagem pode valer a pena: Propagar arrays
9814.5.1 A clonagem pode valer a pena: Propagar arrays
1584.5.2 Por que os arrays podem “fazer” tão pouco?
9824.5.2 Por que os arrays podem “fazer” tão pouco?
1594.5.3 Copiando o conteúdo da matriz
9834.5.3 Copiando o conteúdo da matriz
1604.6 Usando a classe Arrays para comparar, preencher, pesquisar e classificar
9844.6 Usando a classe Arrays para comparar, preencher, pesquisar e classificar
1614.6.1 Representação em String de um Array
9854.6.1 Representação em String de um Array
1624.6.2 Ordenação
9864.6.2 Ordenação
1634.6.3 Ordenação Paralela
9874.6.3 Ordenação Paralela
1644.6.4 Comparando Arrays de Primitivas com Arrays.equals(...) e Arrays.deepEquals(...)*
9884.6.4 Comparando Arrays de Primitivas com Arrays.equals(...) e Arrays.deepEquals(...)*
1654.6.5 Comparando arrays de objetos usando Arrays.equals(...) e Arrays.deepEquals(...)*
9894.6.5 Comparando arrays de objetos usando Arrays.equals(...) e Arrays.deepEquals(...)*
1664.6.6 Pesquisando diferenças usando incompatibilidade (...)*
9904.6.6 Pesquisando diferenças usando incompatibilidade (...)*
1674.6.7 Matrizes de Preenchimento*
9914.6.7 Matrizes de Preenchimento*
1684.6.8 Copiando Seções de Matriz*
9924.6.8 Copiando Seções de Matriz*
1694.6.9 Pesquisa Binária*
9934.6.9 Pesquisa Binária*
1704.6.10 Comparações de matrizes lexicográficas usando compare(...) e compareUnsigned(...)
9944.6.10 Comparações de matrizes lexicográficas usando compare(...) e compareUnsigned(...)
1714.6.11 Arrays para listas com Arrays.asList(...): Conveniente para pesquisar e comparar*
9954.6.11 Arrays para listas com Arrays.asList(...): Conveniente para pesquisar e comparar*
1724.6.12 Uma Cobra Longa
9964.6.12 Uma Cobra Longa
1734.7 O Ponto de Entrada para o Sistema Runtime: main(...)
9974.7 O Ponto de Entrada para o Sistema Runtime: main(...)
1744.7.1 Declaração Correta do Método de Partida
9984.7.1 Declaração Correta do Método de Partida
1754.7.2 Processamento de argumentos de linha de comando
9994.7.2 Processamento de argumentos de linha de comando
1764.7.3 O tipo de retorno de main(...) e System.exit(int)*
10004.7.3 O tipo de retorno de main(...) e System.exit(int)*
1774.8 Leitura Adicional
10014.8 Leitura Adicional
1785 Manipulando caracteres e strings
10025 Manipulando caracteres e strings
1795.1 De ASCII via ISO-8859-1 para Unicode
10035.1 De ASCII via ISO-8859-1 para Unicode
1805.1.1 ASCII
10045.1.1 ASCII
1815.1.2 ISO/IEC 8859-1
10055.1.2 ISO/IEC 8859-1
1825.1.3 Unicode
10065.1.3 Unicode
1835.1.4 Codificação de caracteres Unicode
10075.1.4 Codificação de caracteres Unicode
1845.1.5 Sequências de Fuga
10085.1.5 Sequências de Fuga
1855.1.6 Notação para caracteres Unicode e escapes Unicode
10095.1.6 Notação para caracteres Unicode e escapes Unicode
1865.2 Tipos de dados para caracteres e strings
10105.1.7 Versões Java andam de mãos dadas com o padrão Unicode*
1875.3 A Classe de Personagem
10115.2 Tipos de dados para caracteres e strings
1885.3.1 É Isso?
10125.3 A Classe de Personagem
1895.3.2 Conversão de caracteres para maiúsculas/minúsculas
10135.3.1 É Isso?
1905.3.3 Do Caractere à String
10145.3.2 Conversão de caracteres para maiúsculas/minúsculas
1915.3.4 De char para int: De Character para Number*
10155.3.3 Do Caractere à String
1925.4 Cordas
10165.3.4 De char para int: De Character para Number*
1935.5 A classe String e seus métodos
10175.4 Cordas
1945.5.1 Literais de string como objetos de string para strings constantes
10185.5 A classe String e seus métodos
1955.5.2 Concatenação com +
10195.5.1 Literais de string como objetos de string para strings constantes
1965.5.3 Blocos de texto multilinha com “””
10205.5.2 Concatenação com +
1975.5.4 Comprimento da String e Teste para Strings Vazias
10215.5.3 Blocos de texto multilinha com “””
1985.5.5 Acessando um Caractere Específico com charAt(int)
10225.5.4 Comprimento da String e Teste para Strings Vazias
1995.5.6 Pesquisando caracteres e strings contidos
10235.5.5 Acessando um Caractere Específico com charAt(int)
2005.5.7 O jogo da forca
10245.5.6 Pesquisando caracteres e strings contidos
2015.5.8 Bem que comparamos
10255.5.7 O jogo da forca
2025.5.9 Extraindo Seções de String
10265.5.8 Bem que comparamos
2035.5.10 Acrescentando Strings, Mesclando Strings, Diferenciando Maiúsculas e Espaços em Branco
10275.5.9 Extraindo Seções de String
2045.5.11 Procurado, Encontrado e Substituído
10285.5.10 Acrescentando Strings, Mesclando Strings, Diferenciando Maiúsculas e Espaços em Branco
2055.5.12 Criando Objetos String com Construtores e de Repetições*
10295.5.11 Procurado, Encontrado e Substituído
2065.6 Strings mutáveis com StringBuilder e StringBuffer
10305.5.12 Criando Objetos String com Construtores e de Repetições*
2075.6.1 Criando Objetos StringBuilder
10315.6 Strings mutáveis com StringBuilder e StringBuffer
2085.6.2 Convertendo StringBuilder para outros formatos de string
10325.6.1 Criando Objetos StringBuilder
2095.6.3 Solicitando Caracteres ou Strings
10335.6.2 Convertendo StringBuilder para outros formatos de string
2105.6.4 Anexando Dados
10345.6.3 Solicitando Caracteres ou Strings
2115.6.5 Definindo, Excluindo e Invertendo Caracteres e Strings
10355.6.4 Anexando Dados
2125.6.6 Comprimento e capacidade de um objeto StringBuilder*
10365.6.5 Definindo, Excluindo e Invertendo Caracteres e Strings
2135.6.7 Comparação de Instâncias StringBuilder e Strings com StringBuilder
10375.6.6 Comprimento e capacidade de um objeto StringBuilder*
2145.6.8 hashCode() com StringBuilder*
10385.6.7 Comparação de Instâncias StringBuilder e Strings com StringBuilder
2155.7 CharSequence como tipo base
10395.6.8 hashCode() com StringBuilder*
2165.7.1 Operações Básicas da Interface
10405.7 CharSequence como tipo base
2175.7.2 Método estático compare(...) em CharSequence
10415.7.1 Operações Básicas da Interface
2185.7.3 Métodos padrão na interface CharSequence*
10425.7.2 Método estático compare(...) em CharSequence
2195.8 Convertendo Primitivas e Strings
10435.7.3 Métodos padrão na interface CharSequence*
2205.8.1 Convertendo Tipos Diferentes em Representações de String
10445.8 Convertendo Primitivas e Strings
2215.8.2 Convertendo Conteúdo de String em um Valor Primitivo
10455.8.1 Convertendo Tipos Diferentes em Representações de String
2225.8.3 Representação de String em Formatos Binário, Hexadecimal e Octal*
10465.8.2 Convertendo Conteúdo de String em um Valor Primitivo
2235.8.4 Métodos parse*(...) e print*() no DatatypeConverter*
10475.8.3 Representação de String em Formatos Binário, Hexadecimal e Octal*
2245.9 Concatenando Strings: 5.9.1 Concatenando Strings com StringJoiner
10485.8.4 Métodos parse*(...) e print*() no DatatypeConverter*
2255.10 Strings em Decomposição
10495.9 Concatenando Strings: 5.9.1 Concatenando Strings com StringJoiner
2265.10.1 Dividindo Strings via split(...)
10505.10 Strings em Decomposição
2275.10.2 Sim, podemos, sim, digitalizamos: a classe Scanner
10515.10.1 Dividindo Strings via split(...)
2285.11 Saídas de Formatação: 5.11.1 Formatação e saída via format()
10525.10.2 Sim, podemos, sim, digitalizamos: a classe Scanner
2295.12 Leitura Adicional
10535.11 Saídas de Formatação: 5.11.1 Formatação e saída via format()
2306 classes personalizadas de escrita
10545.12 Leitura Adicional
2316.1 Declarando classes personalizadas com membros
10556 classes personalizadas de escrita
2326.1.1 Classe Mínima
10566.1 Declarando classes personalizadas com membros
2336.1.2 Declarando Variáveis de Objeto
10576.1.1 Classe Mínima
2346.1.3 Declarando Métodos
10586.1.2 Declarando Variáveis de Objeto
2356.1.4 Variáveis sombreadas
10596.1.3 Declarando Métodos
2366.1.5 Esta Referência
10606.1.4 Variáveis sombreadas
2376.2 Privacidade e Visibilidade
10616.1.5 Esta Referência
2386.2.1 Para o público: público
10626.2 Privacidade e Visibilidade
2396.2.2 Não público: as senhas são privadas
10636.2.1 Para o público: público
2406.2.3 Por que não métodos e variáveis livres para todos?
10646.2.2 Não público: as senhas são privadas
2416.2.4 privado não é totalmente privado: depende de quem o vê*
10656.2.3 Por que não métodos e variáveis livres para todos?
2426.2.5 Declarando métodos de acesso para variáveis de objeto
10666.2.4 privado não é totalmente privado: depende de quem o vê*
2436.2.7 Pacote-Visibilidade
10676.2.5 Declarando métodos de acesso para variáveis de objeto
2446.2.8 Resumo da Visibilidade
10686.2.6 Setters e Getters de acordo com a Especificação JavaBeans
2456.3 Um por Todos: Métodos Estáticos e Variáveis de Classe
10696.2.7 Pacote-Visibilidade
2466.3.1 Por que os membros estáticos são úteis
10706.2.8 Resumo da Visibilidade
2476.3.2 Membros Estáticos com
10716.3 Um por Todos: Métodos Estáticos e Variáveis de Classe
2486.3.3 Usando membros estáticos por meio de referências?*
10726.3.1 Por que os membros estáticos são úteis
2496.3.4 Por que a distinção entre maiúsculas e minúsculas é importante*
10736.3.2 Membros Estáticos com
2506.3.5 Variáveis Estáticas para Troca de Dados*
10746.3.3 Usando membros estáticos por meio de referências?*
2516.3.6 Membros Estáticos e Membros de Objeto*
10756.3.4 Por que a distinção entre maiúsculas e minúsculas é importante*
2526.4 Constantes e Enumerações
10766.3.5 Variáveis Estáticas para Troca de Dados*
2536.4.1 Constantes via Variáveis Finais Estáticas
10776.3.6 Membros Estáticos e Membros de Objeto*
2546.4.2 Enumerações de tipo inseguro
10786.4 Constantes e Enumerações
2556.4.3 Tipos de enumeração: Enumerações de tipo seguro com enum
10796.4.1 Constantes via Variáveis Finais Estáticas
2566.5 Criando e Destruindo Objetos
10806.4.2 Enumerações de tipo inseguro
2576.5.1 Construtores de Escrita
10816.4.3 Tipos de enumeração: Enumerações de tipo seguro com enum
2586.5.2 Relacionamento entre Método e Construtor
10826.5 Criando e Destruindo Objetos
2596.5.3 O construtor padrão
10836.5.1 Construtores de Escrita
2606.5.4 Construtores Parametrizados e Sobrecarregados
10846.5.2 Relacionamento entre Método e Construtor
2616.5.5 Copiar Construtores
10856.5.3 O construtor padrão
2626.5.6 Chamando outro construtor da mesma classe via this(...)
10866.5.4 Construtores Parametrizados e Sobrecarregados
2636.5.7 Objetos Imutáveis e Métodos Wither
10876.5.5 Copiar Construtores
2646.5.8 Não sentimos sua falta: o coletor de lixo
10886.5.6 Chamando outro construtor da mesma classe via this(...)
2656.6 Inicialização de classe e objeto*
10896.5.7 Objetos Imutáveis e Métodos Wither
2666.6.1 Inicializando Variáveis de Objeto
10906.5.8 Não sentimos sua falta: o coletor de lixo
2676.6.2 Blocos Estáticos como Inicializadores de Classe
10916.6 Inicialização de classe e objeto*
2686.6.3 Inicializando Variáveis de Classe
10926.6.1 Inicializando Variáveis de Objeto
2696.6.4 Atribuições compiladas das variáveis de classe
10936.6.2 Blocos Estáticos como Inicializadores de Classe
2706.6.5 Inicializador de Instância
10946.6.3 Inicializando Variáveis de Classe
2716.6.6 Definindo Valores Finais nos Blocos Construtores e Estáticos
10956.6.4 Atribuições compiladas das variáveis de classe
2726.7 Conclusão
10966.6.5 Inicializador de Instância
2737 Relacionamento Orientado a Objetos
10976.6.6 Definindo Valores Finais nos Blocos Construtores e Estáticos
2747.1 Associações entre Objetos
10986.7 Conclusão
2757.1.1 Tipos de Associação
10997 Relacionamento Orientado a Objetos
2767.1.2 Relacionamento 1-para-1 Unidirecional
11007.1 Associações entre Objetos
2777.1.3 Tornando-se amigos: relacionamentos bidirecionais 1-para-1
11017.1.1 Tipos de Associação
2787.1.4 Relacionamentos Unidirecionais 1-para-n
11027.1.2 Relacionamento 1-para-1 Unidirecional
2797.2 Herança
11037.1.3 Tornando-se amigos: relacionamentos bidirecionais 1-para-1
2807.2.2 Modelando Eventos
11047.1.4 Relacionamentos Unidirecionais 1-para-n
2817.2.4 Herança Simples e Múltipla*
11057.2 Herança
2827.2.5 As crianças veem tudo? A Visibilidade Protegida
11067.2.1 Herança em Java
2837.2.6 Construtores em Herança e super(...)
11077.2.2 Modelando Eventos
2847.3 Tipos em Hierarquias
11087.2.3 A classe base implícita java.lang.Object
2857.3.1 Typecasting automático e explícito
11097.2.4 Herança Simples e Múltipla*
2867.3.2 O Princípio da Substituição
11107.2.5 As crianças veem tudo? A Visibilidade Protegida
2877.3.3 Tipos de teste com a instância do Operador
11117.2.6 Construtores em Herança e super(...)
2887.3.4 Correspondência de padrões para instância de
11127.3 Tipos em Hierarquias
2897.4 Métodos de Substituição
11137.3.1 Typecasting automático e explícito
2907.4.1 Fornecendo Métodos em Subclasses com um Novo Comportamento
11147.3.2 O Princípio da Substituição
2917.4.2 Com super aos Pais
11157.3.3 Tipos de teste com a instância do Operador
2927.5 Testando Vinculações Dinâmicas
11167.3.4 Correspondência de padrões para instância de
2937.5.1 Vinculado a toString()
11177.4 Métodos de Substituição
2947.5.2 Implementando System.out.println(Object)
11187.4.1 Fornecendo Métodos em Subclasses com um Novo Comportamento
2957.6 Aulas Finais e Métodos Finais
11197.4.2 Com super aos Pais
2967.6.1 Aulas Finais
11207.5 Testando Vinculações Dinâmicas
2977.6.2 Métodos não substituíveis (finais)
11217.5.1 Vinculado a toString()
2987.7 Classes abstratas e métodos abstratos
11227.5.2 Implementando System.out.println(Object)
2997.7.1 Aulas Abstratas
11237.6 Aulas Finais e Métodos Finais
3007.7.2 Métodos abstratos
11247.6.1 Aulas Finais
3017.8 Mais informações sobre substituição e vinculação dinâmica
11257.6.2 Métodos não substituíveis (finais)
3027.8.1 Nenhuma vinculação dinâmica para métodos privados, estáticos e finais
11267.7 Classes abstratas e métodos abstratos
3037.8.2 Tipos de Retorno Covariante
11277.7.1 Aulas Abstratas
3047.8.3 Tipos de Array e Covariância*
11287.7.2 Métodos abstratos
3057.8.4 Vinculação Dinâmica mesmo com Chamadas de Construtor*
11297.8 Mais informações sobre substituição e vinculação dinâmica
3067.8.5 Nenhuma vinculação dinâmica para variáveis de objeto cobertas*
11307.8.1 Nenhuma vinculação dinâmica para métodos privados, estáticos e finais
3077.9 Uma Tarefa de Programação
11317.8.2 Tipos de Retorno Covariante
3088 Interfaces, Enumerações, Classes Seladas, Registros
11327.8.3 Tipos de Array e Covariância*
3098.1 Interfaces
11337.8.4 Vinculação Dinâmica mesmo com Chamadas de Construtor*
3108.1.1 Interfaces são novos tipos
11347.8.5 Nenhuma vinculação dinâmica para variáveis de objeto cobertas*
3118.1.2 Declarando Interfaces
11357.9 Uma Tarefa de Programação
3128.1.3 Métodos Abstratos em Interfaces
11368 Interfaces, Enumerações, Classes Seladas, Registros
3138.1.4 Interfaces de Implementação
11378.1 Interfaces
3148.1.5 Um Exemplo de Polimorfismo com Interfaces
11388.1.1 Interfaces são novos tipos
3158.1.6 Herança Múltipla com Interfaces
11398.1.2 Declarando Interfaces
3168.1.7 Sem Risco de Colisão com Herança Múltipla*
11408.1.3 Métodos Abstratos em Interfaces
3178.1.8 Estendendo Interfaces: Subinterfaces
11418.1.4 Interfaces de Implementação
3188.1.9 Declarações Constantes para Interfaces
11428.1.5 Um Exemplo de Polimorfismo com Interfaces
3198.1.10 Implementação Posterior de Interfaces*
11438.1.6 Herança Múltipla com Interfaces
3208.1.11 Métodos Estáticos Programados em Interfaces
11448.1.7 Sem Risco de Colisão com Herança Múltipla*
3218.1.12 Estendendo e Modificando Interfaces
11458.1.8 Estendendo Interfaces: Subinterfaces
3228.1.13 Métodos Padrão
11468.1.9 Declarações Constantes para interfaces
3238.1.14 Declarando e Usando Interfaces Estendidas
11478.1.10 Implementação Posterior de Interfaces*
3248.1.15 Métodos de Interface Pública e Privada
11488.1.11 Métodos Estáticos Programados em Interfaces
3258.1.16 Interfaces estendidas, herança múltipla e ambiguidades*
11498.1.12 Estendendo e Modificando Interfaces
3268.1.17 Criando Blocos de Construção com Métodos Padrão*
11508.1.13 Métodos Padrão
3278.1.18 Interfaces do marcador*
11518.1.14 Declarando e Usando Interfaces Estendidas
3288.1.19 (Abstrato) Classes e Interfaces em Comparação
11528.1.15 Métodos de Interface Pública e Privada
3298.2 Tipos de Enumeração
11538.1.16 Interfaces estendidas, herança múltipla e ambiguidades*
3308.2.1 Métodos em Objetos Enum
11548.1.17 Criando Blocos de Construção com Métodos Padrão*
3318.2.2 Enumerações com métodos personalizados, construtores e inicializadores*
11558.1.18 Interfaces do marcador*
3328.3 Classes Seladas e Interfaces
11568.1.19 (Abstrato) Classes e Interfaces em Comparação
3338.3.1 Classes Seladas e Interfaces
11578.2 Tipos de Enumeração
3348.3.2 As subclasses são definitivas, lacradas e não lacradas
11588.2.1 Métodos em Objetos Enum
3358.3.3 Notações abreviadas
11598.2.2 Enumerações com métodos personalizados, construtores e inicializadores*
3368.4 Registros
11608.3 Classes Seladas e Interfaces
3378.4.1 Registros Simples
11618.3.1 Classes Seladas e Interfaces
3388.4.2 Registros com Métodos
11628.3.2 As subclasses são definitivas, lacradas e não lacradas
3398.4.3 Personalizando construtores de registro
11638.3.3 Notações abreviadas
3408.4.4 Adicionando Construtores
11648.4 Registros
3418.4.5 Interfaces e Registros Selados
11658.4.1 Registros Simples
3428.4.6 Registros: Resumo
11668.4.2 Registros com Métodos
3439 Deve haver exceções
11678.4.3 Personalizando construtores de registro
3449.1 Cercas em áreas problemáticas
11688.4.4 Adicionando Construtores
3459.1.2 Exceções verificadas e não verificadas
11698.4.5 Interfaces e Registros Selados
3469.1.3 Um NumberFormatException (Exceção não verificada)
11708.4.6 Registros: Resumo
3479.1.4 Anexando uma Data/Hora a um Arquivo de Texto (Exceção Verificada)
11719 Deve haver exceções
3489.1.5 Repetição de Seções Canceladas*
11729.1 Cercas em áreas problemáticas
3499.1.6 Blocos catch vazios
11739.1.1 Exceções em Java com try e catch
3509.1.7 Capturando Múltiplas Exceções
11749.1.2 Exceções verificadas e não verificadas
3519.1.8 Combinando Blocos Catch Idênticos com Multi-Catch
11759.1.3 Um NumberFormatException (Exceção não verificada)
3529.2 Redirecionando exceções e lançamentos no cabeçalho de métodos/construtores: 9.2.1 lançamentos em Construtores e Métodos
11769.1.4 Anexando uma Data/Hora a um Arquivo de Texto (Exceção Verificada)
3539.3 A Hierarquia de Exceções de Classe
11779.1.5 Repetição de Seções Canceladas*
3549.3.1 Membros do Objeto de Exceção
11789.1.6 Blocos catch vazios
3559.3.2 Tipo base arremessável
11799.1.7 Capturando Múltiplas Exceções
3569.3.3 A Hierarquia de Exceções
11809.1.8 Combinando Blocos Catch Idênticos com Multi-Catch
3579.3.4 Capturando Super-Exceções
11819.2 Redirecionando exceções e lançamentos no cabeçalho de métodos/construtores: 9.2.1 lançamentos em Construtores e Métodos
3589.3.5 Já Pegou?
11829.3 A Hierarquia de Exceções de Classe
3599.3.6 Procedimento de Situação Excepcional
11839.3.1 Membros do Objeto de Exceção
3609.3.7 Sem captura geral!
11849.3.2 Tipo base arremessável
3619.3.8 Classes RuntimeException Conhecidas
11859.3.3 A Hierarquia de Exceções
3629.3.9 A interceptação é possível, mas não obrigatória
11869.3.4 Capturando Super-Exceções
3639.4 Manuseio final usando o finalmente
11879.3.5 Já Pegou?
3649.4.1 A Versão Ignorante
11889.3.6 Procedimento de Situação Excepcional
3659.4.2 A tentativa bem-intencionada
11899.3.7 Sem captura geral!
3669.4.3 A partir de agora o Encerramento Faz Parte da Ordem do Dia
11909.3.8 Classes RuntimeException Conhecidas
3679.4.4 Resumo
11919.3.9 A interceptação é possível, mas não obrigatória
3689.4.5 Um try sem catch, mas um try-finally
11929.4 Manuseio final usando o finalmente
3699.5 Acionando Exceções Personalizadas
11939.4.1 A Versão Ignorante
3709.5.1 Acionando Exceções via throw
11949.4.2 A tentativa bem-intencionada
3719.5.2 Conhecendo e usando tipos de exceção de tempo de execução existentes
11959.4.3 A partir de agora o Encerramento Faz Parte da Ordem do Dia
3729.5.3 Parâmetros de teste e boas mensagens de erro
11969.4.4 Resumo
3739.5.4 Declarando novas classes de exceção
11979.4.5 Um try sem catch, mas um try-finally
3749.5.5 Exceções Customizadas como Subclasses de Exception ou RuntimeException?
11989.5 Acionando Exceções Personalizadas
3759.5.6 Capturando e redirecionando exceções*
11999.5.1 Acionando Exceções via throw
3769.5.7 Alterando a Pilha de Chamadas de Exceções*
12009.5.2 Conhecendo e usando tipos de exceção de tempo de execução existentes
3779.5.8 Exceções aninhadas*
12019.5.3 Parâmetros de teste e boas mensagens de erro
3789.6 tente com Recursos (gerenciamento automático de recursos)
12029.5.4 Declarando novas classes de exceção
3799.6.1 tente com Recursos
12039.5.5 Exceções Customizadas como Subclasses de Exception ou RuntimeException?
3809.6.2 A interface AutoCloseable
12049.5.6 Capturando e redirecionando exceções*
3819.6.3 Exceções para close()
12059.5.7 Alterando a Pilha de Chamadas de Exceções*
3829.6.4 Tipos que podem ser fechados e fechados automaticamente
12069.5.8 Exceções aninhadas*
3839.6.5 Usando Múltiplos Recursos
12079.6 tente com Recursos (gerenciamento automático de recursos)
3849.6.6 Exceções Suprimidas*
12089.6.1 tente com Recursos
3859.7 Recursos Especiais de Tratamento de Exceções*
12099.6.2 A interface AutoCloseable
3869.7.1 Valores de retorno para exceções lançadas
12109.6.3 Exceções para close()
3879.7.2 Exceções e Retornos Desaparecem: A Dupla retorna e finalmente
12119.6.4 Tipos que podem ser fechados e fechados automaticamente
3889.7.3 lançamentos em Métodos Substituídos
12129.6.5 Usando Múltiplos Recursos
3899.7.4 Cláusulas de captura inacessíveis
12139.6.6 Exceções Suprimidas*
3909.8 Erros graves: Erro*
12149.7 Recursos Especiais de Tratamento de Exceções*
3919.9 Afirmações*
12159.7.1 Valores de retorno para exceções lançadas
3929.9.1 Usando Asserções em Programas Personalizados
12169.7.2 Exceções e Retornos Desaparecem: A Dupla retorna e finalmente
3939.9.2 Ativando asserções e erros de tempo de execução
12179.7.3 lançamentos em Métodos Substituídos
3949.9.3 Habilitando ou Desabilitando Asserções Mais Detalhado
12189.7.4 Cláusulas de captura inacessíveis
3959.10 Conclusão
12199.8 Erros graves: Erro*
39610 tipos aninhados
12209.9 Afirmações*
39710.1 Classes aninhadas, interfaces e enumerações
12219.9.1 Usando Asserções em Programas Personalizados
39810.2 Tipos aninhados estáticos
12229.9.2 Ativando asserções e erros de tempo de execução
39910.2.1 Modificadores e Visibilidade
12239.9.3 Habilitando ou Desabilitando Asserções Mais Detalhado
40010.2.2 Registros como Contêineres
12249.10 Conclusão
40110.2.3 Implementando tipos aninhados estáticos*
122510 tipos aninhados
40210.3 Tipos aninhados não estáticos
122610.1 Classes aninhadas, interfaces e enumerações
40310.3.1 Criando Instâncias de Classes Internas
122710.2 Tipos aninhados estáticos
40410.3.2 Esta Referência
122810.2.1 Modificadores e Visibilidade
40510.3.3 Arquivos de classe gerados pelo compilador*
122910.2.2 Registros como Contêineres
40610.4 Aulas Locais
123010.2.3 Implementando tipos aninhados estáticos*
40710.4.1 Exemplo com declaração personalizada
123110.3 Tipos aninhados não estáticos
40810.4.2 Usando uma Classe Local para um Timer
123210.3.1 Criando Instâncias de Classes Internas
40910.5 Classes Internas Anônimas
123310.3.2 Esta Referência
41010.5.1 Usando uma Classe Interna Anônima para o Timer
123410.3.3 Arquivos de classe gerados pelo compilador*
41110.5.2 Implementando classes internas anônimas*
123510.4 Aulas Locais
41210.5.3 Construtores de Classes Internas Anônimas
123610.4.1 Exemplo com declaração personalizada
41310.5.4 Acessando variáveis locais de classes locais e anônimas*
123710.4.2 Usando uma Classe Local para um Timer
41410.5.5 Classes aninhadas acessam membros privados
123810.5 Classes Internas Anônimas
41510.6 Ninhos
123910.5.1 Usando uma Classe Interna Anônima para o Timer
41610.7 Conclusão
124010.5.2 Implementando classes internas anônimas*
41711.1 O objeto é a mãe de todas as classes
124110.5.3 Construtores de Classes Internas Anônimas
41811.1.1 Objetos de Classe
124210.5.4 Acessando variáveis locais de classes locais e anônimas*
41911.1.2 Identificação de objetos com toString()
124310.5.5 Classes aninhadas acessam membros privados
42011.1.3 Equivalência de objetos com equals(...) e identidade
124410.6 Ninhos
42111.1.4 Clonando um objeto usando clone()*
124510.7 Conclusão
42211.1.5 Retornando valores de hash via hashCode()*
124611 tipos especiais de Java SE
42311.1.6 System.identityHashCode(...) e o problema de referências de objetos não exclusivos*
124711.1 O objeto é a mãe de todas as classes
42411.1.7 Sincronização*
124811.1.1 Objetos de Classe
42511.2 Referências fracas e limpadores
124911.1.2 Identificação de objetos com toString()
42611.3.1 Testes nulos integrados para equals(...)/hashCode()
125011.1.3 Equivalência de objetos com equals(...) e identidade
42711.3.2 Objects.toString(…)
125111.1.4 Clonando um objeto usando clone()*
42811.3.3 Verificações nulas com manipulação de exceção integrada
125211.1.5 Retornando valores de hash via hashCode()*
42911.3.4 Testes para nulo
125311.1.6 System.identityHashCode(...) e o problema de referências de objetos não exclusivos*
43011.3.5 Verificando a exatidão dos argumentos do programa relacionados ao índice
125411.1.7 Sincronização*
43111.4 Comparando Objetos e Estabelecendo Ordem
125511.2 Referências fracas e limpadores
43211.4.1 Naturalmente Ordenado ou Não?
125611.3 A classe utilitária java.util.Objects
43311.4.2 Método compare*() das Interfaces Comparáveis e Comparadoras
125711.3.1 Testes nulos integrados para equals(...)/hashCode()
43411.4.3 Valores de retorno codificam o pedido
125811.3.2 Objects.toString(…)
43511.4.4 Classificando doces por calorias usando um comparador de amostras
125911.3.3 Verificações nulas com manipulação de exceção integrada
43611.4.5 Dicas para comparadores e implementações comparáveis
126011.3.4 Testes para nulo
43711.4.6 Métodos Estáticos e Padrão no Comparador
126111.3.5 Verificando a exatidão dos argumentos do programa relacionados ao índice
43811.5 Classes Wrapper e Autoboxing
126211.4 Comparando Objetos e Estabelecendo Ordem
43911.5.1 Criando Objetos Wrapper
126311.4.1 Naturalmente Ordenado ou Não?
44011.5.2 Conversões para uma representação de String
126411.4.2 Método compare*() das Interfaces Comparáveis e Comparadoras
44111.5.3 Análise de uma representação de string
126511.4.3 Valores de retorno codificam o pedido
44211.5.4 A classe base numérica para objetos wrapper numéricos
126611.4.4 Classificando doces por calorias usando um comparador de amostras
44311.5.5 Fazendo comparações com compare*(...), compareTo(...), equals(...) e valores de hash
126711.4.5 Dicas para comparadores e implementações comparáveis
44411.5.6 Métodos de Redução Estática em Classes Wrapper
126811.4.6 Métodos Estáticos e Padrão no Comparador
44511.5.7 Constantes para o Tamanho de um Tipo Primitivo*
126911.5 Classes Wrapper e Autoboxing
44611.5.8 Lidando com Números Sem Sinal*
127011.5.1 Criando Objetos Wrapper
44711.5.9 As Classes Inteiras e Longas
127111.5.2 Conversões para uma representação de String
44811.5.10 As Classes Double e Float para Floats
127211.5.3 Análise de uma representação de string
44911.5.11 A Classe Booleana
127311.5.4 A classe base numérica para objetos wrapper numéricos
45011.5.12 Autoboxing: Boxing e Unboxing
127411.5.5 Fazendo comparações com compare*(...), compareTo(...), equals(...) e valores de hash
45111.6 Iterador, Iterável*
127511.5.6 Métodos de Redução Estática em Classes Wrapper
45211.6.1 A interface do iterador
127611.5.7 Constantes para o Tamanho de um Tipo Primitivo*
45311.6.2 O Fornecedor do Iterador
127711.5.8 Lidando com Números Sem Sinal*
45411.6.3 A interface iterável
127811.5.9 As Classes Inteiras e Longas
45511.6.4 Estendido para e iterável
127911.5.10 As Classes Double e Float para Floats
45611.6.5 Iteração Interna
128011.5.11 A Classe Booleana
45711.6.6 Implementando um Iterável Personalizado*
128111.5.12 Autoboxing: Boxing e Unboxing
45811.7.1 Locais para Anotações
128211.6 Iterador, Iterável*
45911.7.3 @Deprecated
128311.6.1 A interface do iterador
46011.7.4 Anotações com Informações Adicionais
128411.6.2 O Fornecedor do Iterador
46111.7.5 @SuppressWarnings
128511.6.3 A interface iterável
46211.8 Leitura Adicional
128611.6.4 Estendido para e iterável
46312 Genéricos<T>
128711.6.5 Iteração Interna
46412.1.1 Homem versus Máquina: Verificação de Tipo do Compilador e do Ambiente de Execução
128811.6.6 Implementando um Iterável Personalizado*
46512.1.2 Foguetes
128911.7 Anotações na plataforma Java, Standard Edition
46612.1.3 Declarando Tipos Genéricos
129011.7.1 Locais para Anotações
46712.1.4 Usando Genéricos
129111.7.2 Tipos de anotação de java.lang
46812.1.5 Os diamantes são para sempre
129211.7.3 @Deprecated
46912.1.6 Interfaces Genéricas
129311.7.4 Anotações com Informações Adicionais
47012.1.7 Métodos/Construtores Genéricos e Inferência de Tipos
129411.7.5 @SuppressWarnings
47112.2 Implementando Generics, Type Erasure e Raw Types
129511.8 Leitura Adicional
47212.2.1 Opções de Implementação
129612 Genéricos<T>
47312.2.2 Apagamento de Tipo
129712.1 Introdução aos Genéricos Java
47412.2.3 Problemas com apagamento de tipo
129812.1.1 Homem versus Máquina: Verificação de Tipo do Compilador e do Ambiente de Execução
47512.2.4 Tipos Brutos
129912.1.2 Foguetes
47612.3 Restringindo tipos por meio de limites
130012.1.3 Declarando Tipos Genéricos
47712.3.1 Restrições simples com extensões
130112.1.4 Usando Genéricos
47812.3.2 Outros supertipos com &
130212.1.5 Os diamantes são para sempre
47912.4 Parâmetros de tipo na cláusula throws*
130312.1.6 Interfaces Genéricas
48012.4.1 Declarando uma Classe com Variável de Tipo <E extends Exception>
130412.1.7 Métodos/Construtores Genéricos e Inferência de Tipos
48112.4.2 Tipo Parametrizado para Variável de Tipo <E extends Exception>
130512.2 Implementando Generics, Type Erasure e Raw Types
48212.5 Herança e Invariância com Genéricos
130612.2.1 Opções de Implementação
48312.5.1 Arrays são covariantes
130712.2.2 Apagamento de Tipo
48412.5.2 Genéricos não são covariantes, mas invariantes
130812.2.3 Problemas com apagamento de tipo
48512.5.3 Curingas com ?
130912.2.4 Tipos Brutos
48612.5.4 Curingas Delimitados
131012.3 Restringindo tipos por meio de limites
48712.5.5 Tipos curinga limitados e variáveis de tipo limitado
131112.3.1 Restrições simples com extensões
48812.5.6 O Princípio PECS
131212.3.2 Outros supertipos com &
48912.6 Consequências do apagamento de tipo: tokens de tipo, matrizes*
131312.4 Parâmetros de tipo na cláusula throws*
49012.6.1 Tokens de Tipo
131412.4.1 Declarando uma Classe com Variável de Tipo <E extends Exception>
49112.6.2 Tokens de Supertipo
131512.4.2 Tipo Parametrizado para Variável de Tipo <E extends Exception>
49212.6.3 Genéricos e Arrays
131612.5 Herança e Invariância com Genéricos
49312.7 Leitura Adicional
131712.5.1 Arrays são covariantes
49413 Expressões Lambda e Programação Funcional
131812.5.2 Genéricos não são covariantes, mas invariantes
49513.1 Interfaces Funcionais e Expressões Lambda
131912.5.3 Curingas com ?
49613.1.1 Classes Implementam Interfaces
132012.5.4 Curingas Delimitados
49713.1.2 Interfaces de Implementação de Expressões Lambda
132112.5.5 Tipos curinga limitados e variáveis de tipo limitado
49813.1.3 Interfaces Funcionais
132212.5.6 O Princípio PECS
49913.1.4 O tipo de uma expressão lambda depende do tipo de destino
132312.6 Consequências do apagamento de tipo: tokens de tipo, matrizes*
50013.1.5 Anotações @FunctionalInterface
132412.6.1 Tokens de Tipo
50113.1.6 Sintaxe para Expressões Lambda
132512.6.2 Tokens de Supertipo
50213.1.7 O Ambiente de Expressões Lambda e Acessos Variáveis
132612.6.3 Genéricos e Arrays
50313.1.8 Exceções em Expressões Lambda
132712.7 Leitura Adicional
50413.1.9 Classes com Método Abstrato como Interface Funcional?*
132813 Expressões Lambda e Programação Funcional
50513.2 Referências de Método
132913.1 Interfaces Funcionais e Expressões Lambda
50613.2.1 Motivação
133013.1.1 Classes Implementam Interfaces
50713.2.2 Referências de Método com ::
133113.1.2 Interfaces de Implementação de Expressões Lambda
50813.2.3 Variações de Referências de Método
133213.1.3 Interfaces Funcionais
50913.3 Referências do Construtor
133313.1.4 O tipo de uma expressão lambda depende do tipo de destino
51013.3.1 Escrevendo Referências do Construtor
133413.1.5 Anotações @FunctionalInterface
51113.3.2 Construtores sem parâmetros e parametrizados
133513.1.6 Sintaxe para Expressões Lambda
51213.3.3 Interfaces predefinidas úteis para referências de construtor
133613.1.7 O Ambiente de Expressões Lambda e Acessos Variáveis
51313.4 Programação Funcional
133713.1.8 Exceções em Expressões Lambda
51413.4.1 Código = Dados
133813.1.9 Classes com Método Abstrato como Interface Funcional?*
51513.4.2 Paradigmas de Programação: Imperativo ou Declarativo
133913.2 Referências de Método
51613.4.3 Princípios de Programação Funcional
134013.2.1 Motivação
51713.4.4 Programação Imperativa e Programação Funcional
134113.2.2 Referências de Método com ::
51813.4.5 Comparador como exemplo de funções de ordem superior
134213.2.3 Variações de Referências de Método
51913.4.6 Visualizando Expressões Lambda como Mapeamentos ou Funções
134313.3 Referências do Construtor
52013.5.1 Blocos com Código e Interface Funcional Consumidor
134413.3.1 Escrevendo Referências do Construtor
52113.5.2 Fornecedor
134513.3.2 Construtores sem parâmetros e parametrizados
52213.5.5 Eu pego dois
134613.3.3 Interfaces predefinidas úteis para referências de construtor
52313.5.6 Interfaces Funcionais com Primitivas
134713.4 Programação Funcional
52413.6 Opcional não é um não inicializador
134813.4.1 Código = Dados
52513.6.1 Usando nulo
134913.4.2 Paradigmas de Programação: Imperativo ou Declarativo
52613.6.2 O Tipo Opcional
135013.4.3 Princípios de Programação Funcional
52713.6.3 Iniciando Interfaces Funcionais com Opcional
135113.4.4 Programação Imperativa e Programação Funcional
52813.6.4 Classes Primitivas-Opcional com Opcionais Especiais*
135213.4.5 Comparador como exemplo de funções de ordem superior
52913.7 O que é tão funcional agora?
135313.4.6 Visualizando Expressões Lambda como Mapeamentos ou Funções
53013.7.1 Reciclabilidade
135413.5 Interfaces funcionais do pacote java.util.function
53113.7.2 Sem estado, imutável
135513.5.1 Blocos com Código e Interface Funcional Consumidor
53213.8 Leitura Adicional
135613.5.2 Fornecedor
53314 Arquitetura, Design e Orientação a Objetos Aplicada
135713.5.3 Predicados e java.util.function.Predicate
53414.1 Modelagem de SÓLIDOS
135813.5.4 Funções via Interface Funcional java.util.function.Function
53514.1.1 Três Regras
135913.5.5 Eu pego dois
53614.1.2 SÓLIDO
136013.5.6 Interfaces Funcionais com Primitivas
53714.1.3 Não seja ESTÚPIDO
136113.6 Opcional não é um não inicializador
53814.2 Arquitetura, Projeto e Implementação
136213.6.1 Usando nulo
53914.3 Padrões de Projeto
136313.6.2 O Tipo Opcional
54014.3.1 Motivação para Padrões de Projeto
136413.6.3 Iniciando Interfaces Funcionais com Opcional
54114.3.2 Singleton
136513.6.4 Classes Primitivas-Opcional com Opcionais Especiais*
54214.3.3 Métodos de Fábrica
136613.7 O que é tão funcional agora?
54314.3.4 Implementando o padrão Observer com ouvintes
136713.7.1 Reciclabilidade
54414.4 Leitura Adicional
136813.7.2 Sem estado, imutável
54515.1 Carregador de Classe e Módulo/Classpath
136913.8 Leitura Adicional
54615.1.1 Classes de Carregamento por Solicitação
137014 Arquitetura, Design e Orientação a Objetos Aplicada
54715.1.2 Observando o carregador de classe em funcionamento
137114.1 Modelagem de SÓLIDOS
54815.1.3 Arquivos JMOD e Arquivos JAR
137214.1.1 Três Regras
54915.1.4 De onde vêm as classes: locais de busca e carregadores de classes especiais
137314.1.2 SÓLIDO
55015.1.5 Definindo o caminho de pesquisa
137414.1.3 Não seja ESTÚPIDO
55115.2 Importando Módulos
137514.2 Arquitetura, Projeto e Implementação
55215.2.1 Quem vê quem?
137614.3 Padrões de Projeto
55315.2.2 Módulos de Plataforma e um Exemplo de JMOD
137714.3.1 Motivação para Padrões de Projeto
55415.2.3 Usando recursos internos da plataforma: --add-exports
137814.3.2 Singleton
55515.2.4 Integrando Novos Módulos
137914.3.3 Métodos de Fábrica
55615.3 Desenvolvendo Módulos Personalizados
138014.3.4 Implementando o padrão Observer com ouvintes
55715.3.1 Módulo com.tutego.candytester
138114.4 Leitura Adicional
55815.3.3 Módulo com.tutego.main
138215 Sistema de módulos da plataforma Java
55915.3.4 Arquivo de informações do módulo com requer
138315.1 Carregador de Classe e Módulo/Classpath
56015.3.6 Experimentos com o arquivo de informações do módulo
138415.1.1 Classes de Carregamento por Solicitação
56115.3.7 Módulos Automáticos
138515.1.2 Observando o carregador de classe em funcionamento
56215.3.8 Módulos Sem nome
138615.1.3 Arquivos JMOD e Arquivos JAR
56315.3.9 Legibilidade e Acessibilidade
138715.1.4 De onde vêm as classes: locais de busca e carregadores de classes especiais
56415.3.10 Migração de Módulo
138815.1.5 Definindo o caminho de pesquisa
56515.4 Leitura Adicional
138915.2 Importando Módulos
56616 A Biblioteca de Classes
139015.2.1 Quem vê quem?
56716.1.1 Módulos, Pacotes e Tipos
139115.2.2 Módulos de Plataforma e um Exemplo de JMOD
56816.1.2 Visão Geral dos Pacotes da Biblioteca Padrão
139215.2.3 Usando recursos internos da plataforma: --add-exports
56916.2 Medição Simples de Tempo e Perfil*: 16.2.1 Perfiladores
139315.2.4 Integrando Novos Módulos
57016.3 A Classe Classe
139415.3 Desenvolvendo Módulos Personalizados
57116.3.1 Obtendo um Objeto de Classe
139515.3.1 Módulo com.tutego.candytester
57216.3.2 Uma classe é um tipo
139615.3.2 Declaração de Módulo com module-info.java e Exportações
57316.4 O Sistema de Classes de Utilidade e Membros
139715.3.3 Módulo com.tutego.main
57416.4.2 Número de CPUs ou Núcleos
139815.3.4 Arquivo de informações do módulo com requer
57516.4.4 Definindo propriedades personalizadas no console*
139915.3.5 Escrevendo insersores de módulo: Java Virtual Machine Switches -p e -m
57616.4.5 Caracteres de nova linha e line.separator
140015.3.6 Experimentos com o arquivo de informações do módulo
57716.4.6 Variáveis de Ambiente do Sistema Operacional
140115.3.7 Módulos Automáticos
57816.5 Os idiomas de diferentes países: 16.5.1 Idiomas Regionais por meio de Objetos de Localidade
140215.3.8 Módulos Sem nome
57916.6 Visão geral das classes de datas importantes
140315.3.9 Legibilidade e Acessibilidade
58016.6.1 Horário do Unix: 1º de janeiro de 1970
140415.3.10 Migração de Módulo
58116.6.2 System.currentTimeMillis()
140515.4 Leitura Adicional
58216.6.3 Conversões de Tempo Simples via TimeUnit
140616 A Biblioteca de Classes
58316.7 API Data-Hora
140716.1 A Filosofia da Classe Java
58416.7.1 Visão Geral Inicial
140816.1.1 Módulos, Pacotes e Tipos
58516.7.2 Tempo Humano e Tempo de Máquina
140916.1.2 Visão Geral dos Pacotes da Biblioteca Padrão
58616.7.3 A classe de data LocalDate
141016.2 Medição Simples de Tempo e Perfil*: 16.2.1 Perfiladores
58716.8.1 Interfaces de programação de aplicativo de registro
141116.3 A Classe Classe
58816.9 Maven: resolvendo gerenciamento de compilação e dependências
141216.3.1 Obtendo um Objeto de Classe
58916.9.1 Dependência a ser aceita
141316.3.2 Uma classe é um tipo
59016.9.2 Repositório Local e Remoto
141416.4 O Sistema de Classes de Utilidade e Membros
59116.9.3 Ciclos de vida, estágios e plug-ins Maven
141516.4.1 Memória da Máquina Virtual Java
59216.10 Leitura Adicional
141616.4.2 Número de CPUs ou Núcleos
59317 Introdução à Programação Concorrente
141716.4.3 Propriedades do Sistema do Ambiente Java
59417.1 Simultaneidade e Paralelismo
141816.4.4 Definindo propriedades personalizadas no console*
59517.1.1 Multitarefa, Processos e Threads
141916.4.5 Caracteres de nova linha e line.separator
59617.1.2 Threads e Processos
142016.4.6 Variáveis de Ambiente do Sistema Operacional
59717.1.3 Como programas simultâneos podem aumentar a velocidade
142116.5 Os idiomas de diferentes países: 16.5.1 Idiomas Regionais por meio de Objetos de Localidade
59817.2 Gerando Threads Existentes e Novos Threads
142216.6 Visão geral das classes de datas importantes
59917.2.1 Tópico Principal
142316.6.1 Horário do Unix: 1º de janeiro de 1970
60017.2.2 Quem sou eu?
142416.6.2 System.currentTimeMillis()
60117.2.3 Implementando a interface executável
142516.6.3 Conversões de Tempo Simples via TimeUnit
60217.2.4 Iniciando Thread com Runnable
142616.7 API Data-Hora
60317.2.5 Parametrizando Executável
142716.7.1 Visão Geral Inicial
60417.2.6 Estendendo a Classe de Rosca*
142816.7.2 Tempo Humano e Tempo de Máquina
60517.3 Membros e Estados do Tópico
142916.7.3 A classe de data LocalDate
60617.3.1 O Nome de um Thread
143016.8 Registrando com Java
60717.3.2 Os Estados de um Thread*
143116.8.1 Interfaces de programação de aplicativo de registro
60817.3.3 Procuram-se travessas
143216.8.2 Registrando com java.util.logging
60917.3.4 Quando as Threads São Finalizadas
143316.9 Maven: resolvendo gerenciamento de compilação e dependências
61017.3.5 Encerrando um thread educadamente usando interrupções
143416.9.1 Dependência a ser aceita
61117.3.6 Exceções não tratadas, Thread End e UncaughtExceptionHandler
143516.9.2 Repositório Local e Remoto
61217.3.7 O stop() de Fora e o Resgate com ThreadDeath*
143616.9.3 Ciclos de vida, estágios e plug-ins Maven
61317.3.8 Parando e Retomando o Trabalho*
143716.10 Leitura Adicional
61417.3.9 Prioridade*
143817 Introdução à Programação Concorrente
61517.4 Digite o Executor
143917.1 Simultaneidade e Paralelismo
61617.4.1 A Interface do Executor
144017.1.1 Multitarefa, Processos e Threads
61717.4.2 Happy as a Group: The Thread Pools
144117.1.2 Threads e Processos
61817.4.3 Threads com retorno via Callable
144217.1.3 Como programas simultâneos podem aumentar a velocidade
61917.4.4 Memórias do Futuro: O Futuro Retorno
144317.1.4 Como o Java pode oferecer simultaneidade
62017.4.5 Processando Múltiplos Objetos Chamáveis
144417.2 Gerando Threads Existentes e Novos Threads
62117.4.6 CompletionService e ExecutorCompletionService
144517.2.1 Tópico Principal
62217.4.7 ScheduledExecutorService: tarefas repetitivas e controles de tempo
144617.2.2 Quem sou eu?
62317.4.8 Programação Assíncrona com CompletableFuture (CompletionStage)
144717.2.3 Implementando a interface executável
62417.5 Leitura Adicional
144817.2.4 Iniciando Thread com Runnable
62518 Introdução a Estruturas de Dados e Algoritmos
144917.2.5 Parametrizando Executável
62618.1 Listas
145017.2.6 Estendendo a Classe de Rosca*
62718.1.1 Exemplo da Primeira Lista
145117.3 Membros e Estados do Tópico
62818.1.2 Critério de Seleção ArrayList ou LinkedList
145217.3.1 O Nome de um Thread
62918.1.3 A interface da lista
145317.3.2 Os Estados de um Thread*
63018.1.4 ArrayList
145417.3.3 Procuram-se travessas
63118.1.5 LinkedList
145517.3.4 Quando as Threads São Finalizadas
63218.1.6 O Adaptador de Array Arrays.asList(...)
145617.3.5 Encerrando um thread educadamente usando interrupções
63318.1.7 ListIterator*
145717.3.6 Exceções não tratadas, Thread End e UncaughtExceptionHandler
63418.1.8 Entendendo toArray(...) de Collection: Reconhecendo Traps
145817.3.7 O stop() de Fora e o Resgate com ThreadDeath*
63518.1.9 Gerenciando Elementos Primitivos em Estruturas de Dados
145917.3.8 Parando e Retomando o Trabalho*
63618.2 Conjuntos
146017.3.9 Prioridade*
63718.2.1 Um Primeiro Exemplo de Conjunto
146117.4 Digite o Executor
63818.2.2 Métodos da Interface Set
146217.4.1 A Interface do Executor
63918.2.3 HashSet
146317.4.2 Happy as a Group: The Thread Pools
64018.2.4 TreeSet: O Conjunto Ordenado
146417.4.3 Threads com retorno via Callable
64118.2.5 As Interfaces NavigableSet e SortedSet
146517.4.4 Memórias do Futuro: O Futuro Retorno
64218.2.6 LinkedHashSet
146617.4.5 Processando Múltiplos Objetos Chamáveis
64318.3 Memória Associativa
146717.4.6 CompletionService e ExecutorCompletionService
64418.3.1 As classes HashMap e TreeMap e os métodos de mapa estático
146817.4.7 ScheduledExecutorService: tarefas repetitivas e controles de tempo
64518.3.2 Inserindo e Consultando a Memória Associativa
146917.4.8 Programação Assíncrona com CompletableFuture (CompletionStage)
64618.4 A API de fluxo
147017.5 Leitura Adicional
64718.4.1 Programação Declarativa
147118 Introdução a Estruturas de Dados e Algoritmos
64818.4.2 Iteração interna versus externa
147218.1 Listas
64918.4.3 O que é um fluxo?
147318.1.1 Exemplo da Primeira Lista
65018.5 Criando um fluxo
147418.1.2 Critério de Seleção ArrayList ou LinkedList
65118.5.1 Stream.of*(…)
147518.1.3 A interface da lista
65218.5.2 Stream.generate(…)
147618.1.4 ArrayList
65318.5.3 Stream.iterate(…)
147718.1.5 LinkedList
65418.5.4 Fluxos Paralelos ou Sequenciais
147818.1.6 O Adaptador de Array Arrays.asList(...)
65518.6 Operações do Terminal
147918.1.7 ListIterator*
65618.6.1 Número de Elementos
148018.1.8 Entendendo toArray(...) de Collection: Reconhecendo Traps
65718.6.2 E Agora Todos: forEach*(…)
148118.1.9 Gerenciando Elementos Primitivos em Estruturas de Dados
65818.6.3 Obtendo elementos individuais do fluxo
148218.2 Conjuntos
65918.6.4 Testes de Existência com Predicados
148318.2.1 Um Primeiro Exemplo de Conjunto
66018.6.5 Reduzindo um fluxo ao seu menor ou maior elemento
148418.2.2 Métodos da Interface Set
66118.6.6 Reduzindo um Stream com Suas Próprias Funções
148518.2.3 HashSet
66218.6.7 Gravando Resultados em um Contêiner, Parte 1: collect(...)
148618.2.4 TreeSet: O Conjunto Ordenado
66318.6.8 Gravando Resultados em um Contêiner, Parte 2: Coletor e Coletores
148718.2.5 As Interfaces NavigableSet e SortedSet
66418.6.9 Gravando Resultados em um Contêiner, Parte 3: Agrupamentos
148818.2.6 LinkedHashSet
66518.6.10 Transferindo elementos de fluxo para um array ou um iterador
148918.3 Memória Associativa
66618.7 Operações intermediárias
149018.3.1 As classes HashMap e TreeMap e os métodos de mapa estático
66718.7.1 Visualizações de elementos
149118.3.2 Inserindo e Consultando a Memória Associativa
66818.7.2 Elementos Filtrantes
149218.4 A API de fluxo
66918.7.3 Operações intermediárias com estado
149318.4.1 Programação Declarativa
67018.7.4 Operações de prefixo
149418.4.2 Iteração interna versus externa
67118.7.5 Imagens
149518.4.3 O que é um fluxo?
67218.8 Leitura Adicional
149618.5 Criando um fluxo
67319 Arquivos e fluxos de dados
149718.5.1 Stream.of*(…)
67419.2 Sistemas de arquivos e caminhos
149818.5.2 Stream.generate(…)
67519.2.1 Sistema de Arquivos e Caminho
149918.5.3 Stream.iterate(…)
67619.2.2 A classe de utilitário de arquivos
150018.5.4 Fluxos Paralelos ou Sequenciais
67719.3 Arquivos de acesso aleatório
150118.6 Operações do Terminal
67819.3.1 Abrindo um RandomAccessFile para Leitura e Escrita
150218.6.1 Número de Elementos
67919.3.2 Lendo de RandomAccessFile
150318.6.2 E Agora Todos: forEach*(…)
68019.3.3 Escrevendo com RandomAccessFile
150418.6.3 Obtendo elementos individuais do fluxo
68119.3.4 O comprimento do RandomAccessFile
150518.6.4 Testes de Existência com Predicados
68219.3.5 Indo e voltando dentro do Arquivo
150618.6.5 Reduzindo um fluxo ao seu menor ou maior elemento
68319.4 Classes Base para Entrada/Saída
150718.6.6 Reduzindo um Stream com Suas Próprias Funções
68419.4.1 As quatro classes básicas abstratas
150818.6.7 Gravando Resultados em um Contêiner, Parte 1: collect(...)
68519.4.2 A Classe Base Abstrata OutputStream
150918.6.8 Gravando Resultados em um Contêiner, Parte 2: Coletor e Coletores
68619.4.3 A Classe Base Abstrata InputStream
151018.6.9 Gravando Resultados em um Contêiner, Parte 3: Agrupamentos
68719.4.4 O Escritor da Classe Base Abstrata
151118.6.10 Transferindo elementos de fluxo para um array ou um iterador
68819.4.5 A Interface Anexável*
151218.7 Operações intermediárias
68919.4.6 O leitor de classe base abstrata
151318.7.1 Visualizações de elementos
69019.4.7 As Interfaces Closeable, AutoCloseable e Flushable
151418.7.2 Elementos Filtrantes
69119.5 Lendo de arquivos e gravando em arquivos
151518.7.3 Operações intermediárias com estado
69219.5.1 Obtendo Fluxos de Dados Orientados a Byte por meio de Arquivos
151618.7.4 Operações de prefixo
69319.5.2 Obtenção de fluxos de dados orientados a caracteres por meio de arquivos
151718.7.5 Imagens
69419.5.3 A função de OpenOption nos métodos Files.new*(...)
151818.8 Leitura Adicional
69519.5.4 Carregando recursos do caminho do módulo e de arquivos JAR
151919 Arquivos e fluxos de dados
69619.6 Leitura Adicional
152019.1 Velho e Novo Mundo em java.io e java.nio
69720 Introdução ao gerenciamento de banco de dados com JDBC
152119.1.1 Pacote java.io com a classe File
69820.1.1 O Modelo Relacional
152219.1.2 NIO.2 e o pacote java.nio
69920.1.2 Interfaces de programação de aplicativos Java para acessar bancos de dados relacionais
152319.2 Sistemas de arquivos e caminhos
70020.1.3 API JDBC e implementações: o driver JDBC
152419.2.1 Sistema de Arquivos e Caminho
70120.2 Uma Consulta de Exemplo
152519.2.2 A classe de utilitário de arquivos
70220.2.1 Etapas para consultar o banco de dados
152619.3 Arquivos de acesso aleatório
70320.3 Leitura Adicional
152719.3.1 Abrindo um RandomAccessFile para Leitura e Escrita
70421 Bits e Bytes, Matemática e Dinheiro
152819.3.2 Lendo de RandomAccessFile
70521.1 Bits e Bytes
152919.3.3 Escrevendo com RandomAccessFile
70621.1.1 Os operadores de bit: Complement, AND, OR e XOR
153019.3.4 O comprimento do RandomAccessFile
70721.1.3 Os sistemas de valor posicional binário, octal e hexadecimal
153119.3.5 Indo e voltando dentro do arquivo
70821.1.4 Efeito do Typecasting em Padrões de Bits
153219.4 Classes Base para Entrada/Saída
70921.1.5 Trabalho sem Sinais
153319.4.1 As quatro classes básicas abstratas
71021.1.6 Os Operadores de Turno
153419.4.2 A Classe Base Abstrata OutputStream
71121.1.7 Definindo, limpando, revertendo e testando um bit
153519.4.3 A Classe Base Abstrata InputStream
71221.1.8 Métodos de Bit das Classes Inteira e Longa
153619.4.4 O Escritor da Classe Base Abstrata
71321.2.1 Valores Especiais para Infinito, Zero e Não é um Número
153719.4.5 A Interface Anexável*
71421.2.2 Notação Padrão e Notação Científica para Flutuantes*
153819.4.6 O leitor de classe base abstrata
71521.2.3 Mantissas e Expoentes*
153919.4.7 As Interfaces Closeable, AutoCloseable e Flushable
71621.3 Os Membros da Classe de Matemática
154019.5 Lendo de arquivos e gravando em arquivos
71721.3.1 Variáveis de Objeto da Classe Math
154119.5.1 Obtendo Fluxos de Dados Orientados a Byte por meio de Arquivos
71821.3.2 Valores Absolutos e Sinais
154219.5.2 Obtenção de fluxos de dados orientados a caracteres por meio de arquivos
71921.3.3 Máximos/Mínimos
154319.5.3 A função de OpenOption nos métodos Files.new*(...)
72021.3.4 Valores de Arredondamento
154419.5.4 Carregando recursos do caminho do módulo e de arquivos JAR
72121.3.5 Resto de uma divisão inteira*
154519.6 Leitura Adicional
72221.3.6 Divisão com Arredondamento para Infinito Negativo e Restos Alternativos*
154620 Introdução ao gerenciamento de banco de dados com JDBC
72321.3.7 Multiplicar-Acumular
154720.1 Bancos de Dados Relacionais e Acesso Java
72421.3.8 Raiz quadrada e métodos exponenciais
154820.1.1 O Modelo Relacional
72521.3.9 O Logaritmo*
154920.1.2 Interfaces de programação de aplicativos Java para acessar bancos de dados relacionais
72621.3.10 Métodos de Ângulo*
155020.1.3 API JDBC e implementações: o driver JDBC
72721.3.11 Números Aleatórios
155120.1.4 H2 é a ferramenta em Java
72821.4 Precisão e Faixa de Valor do Tipo e Controle de Transbordamento*
155220.2 Uma Consulta de Exemplo
72921.4.1 Os Maiores e Menores Valores
155320.2.1 Etapas para consultar o banco de dados
73021.4.2 Transbordamento e Tudo Totalmente Exato
155420.2.2 Acessando o banco de dados relacional com Java
73121.4.3 O que diabos o método ulp faz?
155520.3 Leitura Adicional
73221.5 Números aleatórios: Random, ThreadLocalRandom e SecureRandom
155621 Bits e Bytes, Matemática e Dinheiro
73321.5.1 A Classe Aleatória
155721.1 Bits e Bytes
73421.5.2 ThreadLocalRandom
155821.1.1 Os operadores de bit: Complement, AND, OR e XOR
73521.5.3 A Classe SecureRandom*
155921.1.2 Representação de inteiros em Java: complemento de dois
73621.6 Números Grandes*
156021.1.3 Os sistemas de valor posicional binário, octal e hexadecimal
73721.6.1 A Classe BigInteger
156121.1.4 Efeito do Typecasting em Padrões de Bits
73821.6.2 Exemplo: Fatoriais bastante longos com BigInteger
156221.1.5 Trabalho sem Sinais
73921.6.3 Grandes floats com BigDecimal
156321.1.6 Os Operadores de Turno
74021.6.4 Configurando convenientemente a precisão do cálculo via MathContext
156421.1.7 Definindo, limpando, revertendo e testando um bit
74121.6.5 Calculando ainda mais rápido com implementações mutáveis
156521.1.8 Métodos de Bit das Classes Inteira e Longa
74221.7 Dinheiro e Moeda
156621.2 Aritmética de Ponto Flutuante em Java
74321.7.1 Representando Quantias de Dinheiro
156721.2.1 Valores Especiais para Infinito, Zero e Não é um Número
74421.7.2 ISO 4217
156821.2.2 Notação Padrão e Notação Científica para Flutuantes*
74521.8 Leitura Adicional
156921.2.3 Mantissas e Expoentes*
74622 Testando com JUnit
157021.3 Os Membros da Classe de Matemática
74722.1 Testes de Software: 22.1.1 Procedimento para Escrever Casos de Teste
157121.3.1 Variáveis de Objeto da Classe Math
74822.2 A estrutura de teste JUnit
157221.3.2 Valores Absolutos e Sinais
74922.2.1 Versões JUnit
157321.3.3 Máximos /Mínimos
75022.2.2 Integrando o JUnit
157421.3.4 Valores de Arredondamento
75122.2.3 Desenvolvimento Orientado a Testes e a Abordagem Test-First
157521.3.5 Resto de uma divisão inteira*
75222.2.4 Teste, implemente, teste, implemente, teste, regozije-se
157621.3.6 Divisão com Arredondamento para Infinito Negativo e Restos Alternativos*
75322.2.5 Executando testes JUnit
157721.3.7 Multiplicar-Acumular
75422.2.6 Métodos assert*(...) da Classe Assertions
157821.3.8 Raiz quadrada e métodos exponenciais
75522.2.7 Exceções de Teste
157921.3.9 O Logaritmo*
75622.2.8 Definindo Limites para Tempos de Execução
158021.3.10 Métodos de Ângulo*
75722.2.9 Rótulos com @DisplayName
158121.3.11 Números Aleatórios
75822.2.10 Testes Aninhados
158221.4 Precisão e Faixa de Valor do Tipo e Controle de Transbordamento*
75922.2.11 Ignorando Testes
158321.4.1 Os Maiores e Menores Valores
76022.2.12 Cancelamento de Testes com Métodos da Classe de Suposições
158421.4.2 Transbordamento e Tudo Totalmente Exato
76122.2.13 Testes Parametrizados
158521.4.3 O que diabos o método ulp faz?
76222.4 Estrutura de Grandes Casos de Teste
158621.5 Números aleatórios: Random, ThreadLocalRandom e SecureRandom
76322.4.1 Acessórios
158721.5.1 A Classe Aleatória
76422.4.2 Coleções de classes de teste e organização de classes
158821.5.2 ThreadLocalRandom
76522.5 Um bom design permite testes eficazes
158921.5.3 A Classe SecureRandom*
76622.6 Simulado, falso, toco e simulado
159021.6 Números Grandes*
76722.7 Extensões JUnit e Complementos de Teste
159121.6.1 A Classe BigInteger
76822.7.1 Testes da Web
159221.6.2 Exemplo: Fatoriais bastante longos com BigInteger
76922.7.2 Testando a interface do banco de dados
159321.6.3 Grandes floats com BigDecimal
77022.8 Leitura Adicional
159421.6.4 Configurando convenientemente a precisão do cálculo via MathContext
77123 As ferramentas do JDK
159521.6.5 Calculando ainda mais rápido com implementações mutáveis
77223.1 Visão geral: 23.1.1 Estrutura e Chaves Comuns
159621.7 Dinheiro e Moeda
77323.2.2 Compiladores Nativos
159721.7.1 Representando Quantias de Dinheiro
77423.4.1 Definindo um comentário de documentação
159821.7.2 ISO 4217
77523.4.3 Tags HTML em comentários de documentação*
159921.7.3 Representando Moedas em Java
77623.4.4 Arquivos Gerados
160021.8 Leitura Adicional
77723.4.5 Comentários da Documentação em Relance*
160122 Testando com JUnit
77823.4.7 Tipos e membros obsoletos
160222.1 Testes de Software: 22.1.1 Procedimento para Escrever Casos de Teste
77923.5 O formato de arquivo JAR
160322.2 A estrutura de teste JUnit
78023.5.1 Usando o utilitário jar
160422.2.1 Versões JUnit
78123.5.2 O Manifesto
160522.2.2 Integrando o JUnit
78223.6 Leitura Adicional
160622.2.3 Desenvolvimento Orientado a Testes e a Abordagem Test-First
783Prefácio
160722.2.4 Teste, implemente, teste, implemente, teste, regozije-se
784Grupo alvo
160822.2.5 Executando testes JUnit
785O que este livro não é
160922.2.6 Métodos assert*(...) da Classe Assertions
786Minha vida e Java, ou “Por que um livro de Java?”
161022.2.7 Exceções de Teste
787Software e Versões
161122.2.8 Definindo Limites para Tempos de Execução
788Qual versão do Java usar
161222.2.9 Rótulos com @DisplayName
789Usando este livro para aprender
161322.2.10 Testes Aninhados
790Estratégias de Aprendizagem Pessoal
161422.2.11 Ignorando Testes
791Focando no Essencial
161522.2.12 Cancelamento de Testes com Métodos da Classe de Suposições
792Seções especiais
161622.2.13 Testes Parametrizados
793Tarefas
161722.3 Bibliotecas de Asserção Java e AssertJ: 22.3.1 AssertJ
794Estrutura deste livro
161822.4 Estrutura de Grandes Casos de Teste
795Convenções
161922.4.1 Acessórios
796Listagens de programas
162022.4.2 Coleções de classes de teste e organização de classes
797Documentação da interface de programação de aplicativos neste livro
162122.5 Um bom design permite testes eficazes
798Programas executáveis
162222.6 Simulado, falso, toco e simulado
799Agradecimentos
162322.7 Extensões JUnit e Complementos de Teste
800Recursos para este livro
162422.7.1 Testes da Web
801Opinião
162522.7.2 Testando a interface do banco de dados
8021 Introdução
162622.8 Leitura Adicional
8031.1 Antecedentes Históricos
162723 As ferramentas do JDK
8041.2 Sobre a popularidade do Java: os principais recursos
162823.1 Visão geral: 23.1.1 Estrutura e Chaves Comuns
8051.2.1 Código de bytes
162923.2 Traduzindo fontes Java
8061.2.2 Executando o Bytecode via Máquina Virtual
163023.2.1 O compilador Java do Java Development Kit
8071.2.3 Independência da plataforma
163123.2.2 Compiladores Nativos
8081.2.4 Java como linguagem, ambiente de tempo de execução e biblioteca padrão
163223.3 O Java Runtime Environment
8091.2.5 Orientação a Objetos em Java
163323.3.1 Chaves da Máquina Virtual Java
8101.2.6 Java é difundido e bem conhecido
163423.3.2 A diferença entre java.exe e javaw.exe
8111.2.7 Java é rápido: otimização e compilação just-in-time
163523.4 Comentários de Documentação com Javadoc
8121.2.8 Ponteiros e Referências
163623.4.1 Definindo um comentário de documentação
8131.2.9 Retire o Lixo, Coletor de Lixo!
163723.4.2 Criando documentação com a ferramenta javadoc
8141.2.10 Tratamento de Exceções
163823.4.3 Tags HTML em comentários de documentação*
8151.2.11 A gama de bibliotecas e ferramentas
163923.4.4 Arquivos Gerados
8161.2.12 Sintaxe comparativamente simples
164023.4.5 Comentários da Documentação em Relance*
8171.2.13 Abandonando Conceitos Controversos
164123.4.6 Javadoc e Doclets*
8181.2.14 Java é de código aberto
164223.4.7 Tipos e membros obsoletos
8191.2.15 Para que o Java é menos adequado
164323.4.8 Verificação Javadoc com DocLint
8201.3 Java versus outras linguagens*
164423.5 O formato de arquivo JAR
8211.3.1 Java e C(++)
164523.5.1 Usando o utilitário jar
8221.3.2 Java e JavaScript
164623.5.2 O Manifesto
8231.3.3 Uma palavra sobre Microsoft, Java e J++
164723.5.3 Iniciando aplicativos em arquivos Java: arquivos JAR executáveis
8241.3.4 Java e C#/.NET
164823.6 Leitura Adicional