+2 meses grátis
para
acelerar a sua carreira
Tá acabando!
00
DIAS
00
HORAS
00
MIN
00
SEG
APROVEITE
Carreiras
Ao Vivo
Pós-Graduação
Conteúdos
Para Empresas
Entrar
Ver planos
Carreiras
Ao Vivo
Pós-Graduação
Conteúdos
Para Empresas
Voltar
Trilhas por carreira
Ver Todas
IA
Engenharia de IA
Especialista em IA
Dados
Ciência de Dados
Análise de Dados
Governança de Dados
Cyber
Cloud Security
AppSec: Desenvolvimento Seguro de Aplicações
DevOps & Cloud
Platform Engineering
SRE (Site Reliability Engineering)
UX & UI
UI Design
UX Design
Mobile & Front-End
Desenvolvimento Mobile com Flutter
Desenvolvimento Front-End React
Back-End
Desenvolvimento Back-End PHP
Desenvolvimento Back-End .NET
Desenvolvimento Back-End Python
Desenvolvimento Back-End Java
Desenvolvimento Back-End Node.js
Negócios
Liderança
Recursos Humanos (RH)
Social Media Marketing
Growth Marketing
Voltar
Cursos Imersivos
Aprendizados ao vivo, intensivo e especializado, com turmas reduzidas e atenção personalizada
Certificações
Prepare-se para conquistar certificações valorizadas com aulas ao vivo
Voltar
Cursos por área de atuação
Ver Todos
Data
Data Analytics
Machine Learning Engineering
IA
IA Para Devs
IA Para Negócios - Gestão Estratégica e Liderança
Machine Learning Engineering
Cyber
Defensive Cyber Sec
Offensive Cyber Sec
Tech & Business
Digital Product Management
Growth Marketing
Tech Management
Dev
Arquitetura de Sistemas .Net
Arquitetura e Dev JAVA
Front-end Engineering
Full Stack Development
IA Para Devs
Software Architecture
DevOps e Arquitetura Cloud
Voltar
Praticar
Imersões
Eventos ao vivo e gratuitos que conectam comunidade e novas tecnologias
7 Days of Code
Desafios diários para praticar durante 7 dias
Aprofundar
Artigos
Biblioteca com artigos de todas as escolas e assuntos da Alura
Podcasts
Explore o universo de podcasts da Alura
Tech Guide
Um guia de carreira para se tornar um profissional em T
Vídeos Extras
Vídeos extras para aprofundar seus estudos
Nosso Impacto
Depoimentos de Alunos
Veja como nossos alunos evoluíram na prática e alcançaram novas oportunidades
Cases de Sucesso
Exclusivo para estudantes Alura
Aprenda a partir de casos reais de líderes de grandes empresas de tecnologia
Programação
_
Front-end
_
Data Science
_
Inteligência Artificial
_
DevOps
_
UX & Design
_
Mobile
_
Inovação & Gestão
_
Nome
e-mail
Qual área mais te interessa hoje?
UX e Usabilidade Aplicados em Mobile e Web
Java para Desenvolvimento Web
Java e Orientação a Objetos
Desenvolvimento Web com HTML, CSS e JavaScript
Python e Orientação a Objetos
C# e Orientação a Objetos
Qual o seu objetivo ao baixar a apostila da Caelum?
Reforçar um conhecimento que já tenho
Aprender uma nova tecnologia
Estou decidindo o que vou estudar no futuro
Vou tirar uma dúvida pontual
Me preparar para um novo trabalho
Tenho outro objetivo
baixar apostilas
Apostila
Java e Orientação a Objetos
sumário
1 Como Aprender Java
1.1 O que é realmente importante?
1.2 Sobre os exercícios
1.3 Tirando dúvidas e indo além
2 O que é Java
2.1 Java
2.2 Uma breve história do Java
2.3 Máquina Virtual
2.4 Java lento? Hotspot e JIT
2.5 Versões do Java e a confusão do Java2
2.6 JVM? JRE? JDK? O que devo baixar?
2.7 Onde usar, e os objetivos do Java
2.8 Especificação versus implementação
2.9 Como o FJ-11 está organizado
2.10 Compilando o primeiro programa
2.11 Executando seu primeiro programa
2.12 O que aconteceu?
2.13 Para saber mais: como é o bytecode?
2.14 Exercícios: modificando o Hello World
2.15 O que pode dar errado?
2.16 Um pouco mais...
2.17 Exercícios opcionais
3 Variáveis Primitivas e Controle de Fluxo
3.1 Declarando e usando variáveis
3.2 Tipos primitivos e valores
3.3 Exercícios: Variáveis e tipos primitivos
3.4 Discussão em aula: convenções de código e código legível
3.5 Casting e promoção
3.6 O if e o else
3.7 O While
3.8 O For
3.9 Controlando loops
3.10 Escopo das variáveis
3.11 Um bloco dentro do outro
3.12 Para saber mais
3.13 Exercícios: fixação de sintaxe
3.14 Desafios: Fibonacci
4 Orientação a Objetos Básica
4.1 Motivação: problemas do paradigma procedural
4.2 Criando um tipo
4.3 Uma classe em Java
4.4 Criando e usando um objeto
4.5 Métodos
4.6 Métodos com retorno
4.7 Objetos são acessados por referências
4.8 O método transfere()
4.9 Continuando com atributos
4.10 Para saber mais: uma fábrica de carros
4.11 Um pouco mais...
4.12 Exercícios: Orientação a Objetos
4.13 Desafios
4.14 Fixando o conhecimento
5 Modificadores de Acesso e Atributos de Classe
5.1 Controlando o acesso
5.2 Encapsulamento
5.3 Getters e setters
5.4 Construtores
5.5 A necessidade de um construtor
5.6 Atributos de classe
5.7 Um pouco mais...
5.8 Exercícios: encapsulamento, construtores e static
5.9 Desafios
6 Eclipse IDE
6.1 O Eclipse
6.2 Apresentando o Eclipse
6.3 Views e Perspective
6.4 Criando um projeto novo
6.5 Criando o main
6.6 Executando o main
6.7 Pequenos truques
6.8 Exercícios: Eclipse
6.9 Discussão em aula: Refactoring
7 Pacotes - Organizando suas Classes e Bibliotecas
7.1 Organização
7.2 Diretórios
7.3 Import
7.4 Acesso aos atributos, construtores e métodos
7.5 Usando o Eclipse com pacotes
7.6 Exercícios: pacotes
8 Ferramentas: JAR e Javadoc
8.1 Arquivos, bibliotecas e versões
8.2 Gerando o JAR pelo Eclipse
8.3 Javadoc
8.4 Gerando o Javadoc
8.5 Exercícios: JAR e Javadoc
8.6 Importando um JAR externo
8.7 Exercícios: Importando um JAR
8.8 Manipulando a conta pela interface gráfica
8.9 Exercícios: mostrando os dados da conta na tela
9 Herança, Reescrita e Polimorfismo
9.1 Repetindo código?
9.2 Reescrita de método
9.3 Invocando o método reescrito
9.4 Polimorfismo
9.5 Um outro exemplo
9.6 Um pouco mais...
9.7 Exercícios: herança e polimorfismo
9.8 Discussões em aula: alternativas ao atributo protected
10 Classes Abstratas
10.1 Repetindo mais código?
10.2 Classe abstrata
10.3 Métodos abstratos
10.4 Aumentando o exemplo
10.5 Para saber mais...
10.6 Exercícios: classes abstratas
11 Interfaces
11.1 Aumentando nosso exemplo
11.2 Interfaces
11.3 Dificuldade no aprendizado de interfaces
11.4 Exemplo interessante: conexões com o banco de dados
11.5 Exercícios: interfaces
11.6 Exercícios opcionais
11.7 Discussão: favoreça composição em relação à herança
12 Exceções e Controle de Erros
12.1 Motivação
12.2 Exercício para começar com os conceitos
12.3 Exceções de Runtime mais comuns
12.4 Outro tipo de exceção: Checked Exceptions
12.5 Um pouco da grande família Throwable
12.6 Mais de um erro
12.7 Lançando exceções
12.8 O que colocar dentro do try?
12.9 Criando seu próprio tipo de exceção
12.10 Para saber mais: finally
12.11 Exercícios: exceções
12.12 Desafios
12.13 Discussão em aula: catch e throws com Exception
13 O Pacote java.lang
13.1 Pacote java.lang
13.2 Um pouco sobre a classe System
13.3 java.lang.Object
13.4 Métodos do java.lang.Object: equals e toString
13.5 Exercícios: java.lang.Object
13.6 java.lang.String
13.7 Exercícios: java.lang.String
13.8 Desafio
13.9 Discussão em aula: o que você precisa fazer em Java?
14 Um Pouco de Arrays
14.1 O problema
14.2 Arrays de referências
14.3 Percorrendo uma array
14.4 Percorrendo uma array no Java 5.0
14.5 Exercícios: arrays
14.6 Um pouco mais...
14.7 Desafios opcionais
15 Collections Framework
15.1 Arrays são trabalhosas, utilizar estrutura de dados
15.2 Listas: java.util.List
15.3 Listas no Java 5 e Java 7 com Generics
15.4 A importância das interfaces nas coleções
15.5 Ordenação: Collections.sort
15.6 Exercícios: ordenação
15.7 Conjunto: java.util.Set
15.8 Principais interfaces: java.util.Collection
15.9 Percorrendo coleções no Java 5
15.10 Para saber mais: iterando sobre coleções com java.util.Iterator
15.11 Mapas - java.util.Map
15.12 Para saber mais: Properties
15.13 Para saber mais: Equals e HashCode
15.14 Para saber mais: boas práticas
15.15 Exercícios: Collections
15.16 Desafios
15.17 Para saber mais: Comparators, classes anônimas, Java 8 e o lambda
16 E Agora?
16.1 Web
16.2 Praticando Java e usando bibliotecas
16.3 Grupos de usuários
16.4 Próximos cursos
17 Pacote java.io
17.1 Conhecendo uma API
17.2 Orientação a objetos no java.io
17.3 InputStream, InputStreamReader e BufferedReader
17.4 Lendo Strings do teclado
17.5 A analogia para a escrita: OutputStream
17.6 Uma maneira mais fácil: Scanner e PrintStream
17.7 Um pouco mais...
17.8 Integer e classes wrappers (box)
17.9 Autoboxing no Java 5.0
17.10 Para saber mais: java.lang.Math
17.11 Exercícios: Java I/O
17.12 Discussão em aula: Design Patterns e o Template Method
18 Apêndice - Programação Concorrente e Threads
18.1 Threads
18.2 Escalonador e trocas de contexto
18.3 Garbage Collector
18.4 Exercícios
18.5 E as classes anônimas?
19 Apêndice - Sockets
19.1 Motivação: uma API que usa os conceitos aprendidos
19.2 Protocolo
19.3 Porta
19.4 Socket
19.5 Servidor
19.6 Cliente
19.7 Imagem geral
19.8 Exercícios: Sockets
19.9 Desafio: múltiplos clientes
19.10 Desafio: broadcast das mensagens
19.11 Solução do sistema de chat
20 Apêndice - Problemas com Concorrência
20.1 Threads acessando dados compartilhados
20.2 Controlando o acesso concorrente
20.3 Vector e Hashtable
20.4 Um pouco mais...
20.5 Exercícios avançados de programação concorrente e locks
21 Apêndice - Instalação do Java
21.1 Instalando no Ubuntu e em outros Linux
21.2 No Mac OS X
21.3 Instalação do JDK em ambiente Windows
22 Apêndice - Debugging
22.1 O que é debugar
22.2 Debugando no Eclipse
22.3 Perspectiva de debug
22.4 Debug avançado
22.5 Profiling
22.6 Profiling no Eclipse TPTP
23 Resoluções de exercícios
23.1 Exercícios 3.3: variáveis e tipos primitivos
23.2 Exercícios 3.13: fixação de sintaxe
23.3 Desafios 3.14: Fibonacci
23.4 Exercícios 4.12: orientação a objetos
23.5 Desafios 4.13
23.6 Exercícios 5.8: encapsulamento, construtores e static
23.7 Desafios 5.9
23.8 Exercícios 8.9: mostrando os dados da conta na tela
23.9 Exercícios 9.7: herança e polimorfismo
23.10 Exercícios 11.5: interfaces
23.11 Exercícios opcionais 11.6
23.12 Exercícios 12.11: exceções
23.13 Desafios 12.12
23.14 Exercícios 13.5: java.lang.Object
23.15 Exercícios 13.7: java.lang.String
23.16 Desafio 13.8
23.17 Exercícios 14.5: arrays
23.18 Exercícios 15.6: ordenação
23.19 Exercícios 15.15: collections
23.20 Desafios 15.16
23.21 Exercícios 17.11: Apêndice Java I/O