PopularJornada
Aprenda Java
Um curso de Java online, grátis e interativo. Você escreve Java em cada aula — sintaxe, classes e objetos, herança, collections — com dicas de IA quando algo não compila, e um certificado grátis ao concluir.
214,302+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentos
Começar seçãoIniciarExpandirRecolherConstrua uma base sólida com conceitos essenciais e habilidades básicasIntroduction
4 lições324- 01JavaDesafio
- 02Hello World!DesafioQuizÁudio
- 03CommentsQuizÁudio
- 04Basic Program StructureDesafioQuizÁudio
Variables Part 1
5 lições940- 01NumbersDesafioMaestriaQuizÁudio
- 02StringDesafioMaestriaQuizÁudio
- 03BooleanDesafioMaestriaQuizÁudio
- 04charDesafioMaestriaQuizÁudio
- 05Type DeclarationDesafioQuizÁudio
Variables Part 2
5 lições333- 01ConstantsDesafioQuizÁudio
- 02Naming ConventionsQuizÁudio
- 03Recap - Initialize VariablesDesafio
- 04Type Casting Part 1DesafioQuizÁudio
- 05Type Casting Part 2QuizÁudio
Operators Part 1
7 lições956- 01Arithmetic OperatorsDesafioMaestriaQuizÁudio
- 02Modulo OperatorDesafioMaestriaQuizÁudio
- 03Increment/DecrementDesafioMaestriaQuizÁudio
- 04Post Increment/DecrementMaestriaQuizÁudio
- 05Arithmetic ShortcutsDesafioQuizÁudio
- 06Comparison OperatorsDesafioQuizÁudio
- 07String ComparisonQuizÁudio
Operators Part 2
5 lições834- 01Logical Operators Part 1DesafioMaestriaQuizÁudio
- 02Logical Operators Part 2DesafioMaestriaQuizÁudio
- 03Recap - Simple LogicDesafio
- 04Logical Operators Part 3DesafioQuizÁudio
- 05Logical Operators Part 4DesafioMaestriaQuizÁudio
Decision Making
6 lições1038- 01If StatementDesafioMaestriaQuizÁudio
- 02If - ElseDesafioMaestriaQuizÁudio
- 03Switch StatementDesafioMaestriaQuizÁudio
- 04Ternary OperatorDesafioMaestriaQuizÁudio
- 05Recap - If ElseDesafio
- 06Nested If - ElseDesafioQuizÁudio
Basic IO
5 lições723- 01System.out MethodsDesafioMaestriaQuizÁudio
- 02Formatting OutputDesafioMaestriaQuizÁudio
- 03Scanner ClassDesafioQuizÁudio
- 04Recap - Till 120Desafio
- 05Recap - True or FalseDesafio
Calculator App
Projeto4 lições1- 01Welcome MessageDesafio
- 02Getting NumbersProjeto
- 03Basic OperationsProjeto
- 04Formatted OutputProjeto
Loops
9 lições1362- 01For Loop Part 1DesafioMaestriaQuizÁudio
- 02While LoopDesafioMaestriaQuizÁudio
- 03Do While LoopDesafioMaestriaQuizÁudio
- 04BreakDesafioMaestriaQuizÁudio
- 05ContinueDesafioMaestriaQuizÁudio
- 06For Loop Part 2QuizÁudio
- 07Nested LoopDesafioMaestriaQuizÁudio
- 08Infinite LoopQuizÁudio
- 09Recap - Dynamic InputDesafio
Methods (Functions)
7 lições843- 01Declaring MethodsDesafioMaestriaQuizÁudio
- 02Method ParametersDesafioQuizÁudio
- 03Return TypesDesafioQuizÁudio
- 04Method OverloadingMaestriaQuizÁudio
- 05Recap - Sigma FunctionDesafio
- 06Recap - Validation FunctionDesafio
- 07Void MethodsDesafioQuizÁudio
Arrays Basics
6 lições929- 01Declaring ArraysDesafioQuizÁudio
- 02Accessing ElementsDesafioQuizÁudio
- 03Modifying ArraysDesafioMaestriaQuizÁudio
- 04Array MethodsDesafioMaestriaQuizÁudio
- 05Recap - Product ArrayDesafioMaestria
- 06Recap - Reversed ArrayDesafio
Iterating Over Arrays
3 lições423- 01Using For LoopDesafioQuizÁudio
- 02Enhanced For LoopDesafioQuizÁudio
- 03Common Array OperationsDesafioMaestriaQuizÁudio
String Operations
4 lições832- 01String Methods Part 1DesafioMaestriaQuizÁudio
- 02String Methods Part 2DesafioMaestriaQuizÁudio
- 03String FormattingDesafioMaestriaQuizÁudio
- 04String ComparisonDesafioMaestriaQuizÁudio
Final Challenges
3 lições38- 01Number PatternDesafioQuizÁudio
- 02Pattern FinderDesafio
- 03Student Grade CalculatorDesafio
Seção 2
Lógica e Fluxo
Começar seçãoIniciarExpandirRecolherDomine a programação avançada em Java com foco em estruturas de dados e controle de fluxo. Aprenda a trabalhar com arrays complexos, collections, tratamento de erros e gerenciamento de tempo.Arrays Multidimensionais
9 lições1457- 01Básicos de Arrays 2DDesafioQuiz
- 02Acessando Elementos de Arrays 2DDesafioQuiz
- 03Loops Aninhados com Arrays 2DDesafioMaestriaQuiz
- 04Resumo - Arrays 2DDesafio
- 05Adição e Subtração de MatrizesDesafioMaestriaQuiz
- 06Arrays EscalonadosDesafioMaestriaQuiz
- 07Arrays 3D e AlémDesafioMaestriaQuiz
- 08Padrões Comuns de Arrays 2DDesafioMaestriaQuiz
- 09Resumo - Tudo Sobre ArraysDesafio
HashMap Parte 1
6 lições637- 01O que é um HashMap?Quiz
- 02Declarar um HashMapDesafioQuiz
- 03Acessando ValoresDesafioQuiz
- 04Verificar se a Chave ExisteDesafioMaestriaQuiz
- 05Modificando DicionáriosDesafioQuiz
- 06Resumo - HashMapDesafio
HashMap Parte 2
6 lições1030- 01Métodos do HashMapDesafioMaestriaQuiz
- 02Iterar com keySet()DesafioMaestriaQuiz
- 03Iterar com entrySet()DesafioMaestriaQuiz
- 04HashMap AninhadoDesafioMaestriaQuiz
- 05Resumo - Gerenciar ArmazémDesafio
- 06Resumo - Operações do HashMapDesafio
HashSet Parte 1
7 lições844- 01O que é um HashSet?Quiz
- 02Adicionando um ElementoDesafioQuiz
- 03Removendo um ElementoDesafioQuiz
- 04Verificando se um Elemento ExisteDesafioMaestriaQuiz
- 05Vazio e TamanhoDesafioMaestriaQuiz
- 06Limpar e ClonarDesafioQuiz
- 07Resumo - HashSetDesafio
HashSet Parte 2
6 lições1146- 01Mat. - União de HashSetsDesafioMaestriaQuiz
- 02Mat. - Interseção de HashSetDesafioMaestriaQuiz
- 03Mat. - Diferença de ConjuntosDesafioMaestriaQuiz
- 04Mat. - Diferença SimétricaDesafioQuiz
- 05Subconjuntos e SuperconjuntosDesafioMaestriaQuiz
- 06Iterando Sobre ConjuntosDesafioMaestriaQuiz
Fluxo de Controle Avançado
5 lições929- 01Declarações RotuladasDesafioMaestriaQuiz
- 02Expressão SwitchDesafioMaestriaQuiz
- 03Correspondência de PadrõesDesafioMaestriaQuiz
- 04Cláusulas de GuardaDesafioMaestriaQuiz
- 05Resumo - Fluxo de ControleDesafio
Tratamento Básico de Erros
4 lições630- 01Try-Catch BásicoDesafioMaestriaQuiz
- 02Bloco FinallyDesafioQuiz
- 03Lançando ExceçõesDesafioMaestriaQuiz
- 04Exceções PersonalizadasDesafioQuiz
Operações Avançadas com Strings
6 lições1145- 01Básicos do StringBuilderDesafioMaestriaQuiz
- 02Introdução ao StringBufferDesafioMaestriaQuiz
- 03Básicos de Expressões RegularesDesafioMaestriaQuiz
- 04Emparelhamento de Padrões com RegexDesafioMaestriaQuiz
- 05Tokenizador de StringsDesafioMaestriaQuiz
- 06Formatação Avançada de StringsDesafioQuiz
Projeto - Contador de Palavras Únicas
Projeto4 lições123- 01Entrada e Armazenamento de TextoDesafio
- 02Processamento de PalavrasProjetoQuiz
- 03Contagem de PalavrasProjetoQuiz
- 04Estatísticas AvançadasProjetoQuiz
Data e Hora
6 lições646- 01Básicos do LocalDateDesafioQuiz
- 02Operações com LocalTimeDesafioQuiz
- 03Uso do LocalDateTimeDesafioQuiz
- 04Period e DurationDesafioQuiz
- 05Formatação de DataDesafioQuiz
- 06Tratamento de Fuso HorárioDesafioQuiz
Seção 3
Programação Orientada a Objetos
Começar seçãoIniciarExpandirRecolherDescubra como organizar o código com classes, objetos e estruturas reutilizáveisFundamentos de POO
9 lições971- 01Arquivos ExternosDesafioQuiz
- 02Introdução à POODesafioQuiz
- 03Classes vs ObjetosDesafioQuiz
- 04A Palavra-chave thisDesafioQuiz
- 05MétodosDesafioQuiz
- 06Campos (Atributos)DesafioQuiz
- 07Método ConstrutorDesafioQuiz
- 08Sobrecarga de ConstrutorDesafioQuiz
- 09Recapitulação - Calculadora SimplesDesafio
Modificadores de Acesso e Encapsulamento
5 lições536- 01Visão Geral dos Níveis de AcessoDesafioQuiz
- 02Métodos Getter e SetterDesafioQuiz
- 03Ocultação de InformaçõesDesafioQuiz
- 04A Palavra-chave finalDesafioQuiz
- 05Recapitulação - Gerenciador de Conta BancáriaDesafio
Propriedades de Classe e Membros Estáticos
5 lições533- 01Variáveis de Instância vs EstáticasDesafioQuiz
- 02Métodos EstáticosDesafioQuiz
- 03Blocos EstáticosDesafioQuiz
- 04Constantes (static final)DesafioQuiz
- 05Recapitulação - Contador e UtilitárioDesafio
Herança
8 lições862- 01Herança Básica (extends)DesafioQuiz
- 02A Palavra-chave superDesafioQuiz
- 03Sobrescrita de Método (@Override)DesafioQuiz
- 04Encadeamento de ConstrutoresDesafioQuiz
- 05A Classe ObjectDesafioQuiz
- 06Herança Simples e MultinívelDesafioQuiz
- 07Por que não há Herança Múltipla de ClassesDesafioQuiz
- 08Recapitulação - Hierarquia de FuncionáriosDesafio
Polimorfismo
6 lições645- 01Fundamentos de Sobrecarga de MétodosDesafioQuiz
- 02Sobrescrita de Métodos (Tempo de Execução)DesafioQuiz
- 03Upcasting e DowncastingDesafioQuiz
- 04O Operador instanceofDesafioQuiz
- 05Classes e Métodos AbstratosDesafioQuiz
- 06Recapitulação - Calculadora de FormasDesafio
Interfaces e Classes Abstratas
7 lições754- 01Introdução às InterfacesDesafioQuiz
- 02Implementando InterfacesDesafioQuiz
- 03Implementação de Múltiplas InterfacesDesafioQuiz
- 04Default e Static em InterfacesDesafioQuiz
- 05Classes Abstratas vs InterfacesDesafioQuiz
- 06Interfaces FuncionaisDesafioQuiz
- 07Recapitulação - Sistema de PagamentoDesafio
Métodos Especiais e a Classe Object
6 lições644- 01Método toString()DesafioQuiz
- 02equals() e hashCode()DesafioQuiz
- 03Método clone()DesafioQuiz
- 04compareTo() e ComparableDesafioQuiz
- 05Interface ComparatorDesafioQuiz
- 06Recapitulação - Ordenação PersonalizadaDesafio
Conceitos Avançados de OOP
6 lições653- 01Composição vs HerançaDesafioQuiz
- 02Agregação vs ComposiçãoDesafioQuiz
- 03Classes Internas, Aninhadas e AnônimasDesafioQuiz
- 04Enums e Métodos de EnumDesafioQuiz
- 05Records (Java 16+)DesafioQuiz
- 06Classes Seladas (Java 17+)DesafioQuiz
Generics
6 lições644- 01Introdução a GenericsDesafioQuiz
- 02Classes GenéricasDesafioQuiz
- 03Métodos GenéricosDesafioQuiz
- 04Parâmetros de Tipos DelimitadosDesafioQuiz
- 05Wildcards (?, extends, super)DesafioQuiz
- 06Recapitulação - Container GenéricoDesafio
Tratamento de Exceções em POO
5 lições536- 01Hierarquia de Classes de ExceçãoDesafioQuiz
- 02Exceções PersonalizadasDesafioQuiz
- 03Erros Checked vs UncheckedDesafioQuiz
- 04Padrão Try With ResourcesDesafioQuiz
- 05Recapitulação - Usuário ValidadoDesafio
Padrões de Projeto Parte 1
6 lições654- 01Introdução aos Padrões de ProjetoDesafioQuiz
- 02Padrão SingletonDesafioQuiz
- 03Padrão FactoryDesafioQuiz
- 04Padrão BuilderDesafioQuiz
- 05Padrão ObserverDesafioQuiz
- 06Padrão StrategyDesafioQuiz
Padrões de Projeto Parte 2
7 lições763- 01Padrão CommandDesafioQuiz
- 02Padrão AdapterDesafioQuiz
- 03Padrão DecoratorDesafioQuiz
- 04Padrão Template MethodDesafioQuiz
- 05Padrão StateDesafioQuiz
- 06Padrão CompositeDesafioQuiz
- 07Padrão IteratorDesafioQuiz
Projeto: Gerenciamento de Biblioteca
Projeto7 lições1- 01Visão Geral do Projeto e Modelagem UMLDesafio
- 02Classes Livro e UsuárioProjeto
- 03Sistema de EmpréstimosProjeto
- 04Funcionalidade de BuscaProjeto
- 05Interface do AdministradorProjeto
- 06Integração de Tratamento de ExceçõesProjeto
- 07Testes e IntegraçãoProjeto
Desafios Finais
4 lições437- 01Plataforma de E-LearningDesafioQuiz
- 02Sistema BancárioDesafioQuiz
- 03Desenvolvimento de Personagens de JogosDesafioQuiz
- 04Serviço de Aluguel de VeículosDesafioQuiz
Por que aprender Java com a Coddy
- Escreva e execute código Java real no navegador. Sem instalar o JDK, sem configurar IDE. O editor compila e roda seu programa Java no servidor e mostra a saída na hora.
- Java orientado a objetos como é usado no mundo real: classes, herança, interfaces, polimorfismo, generics, tratamento de exceções. Cada conceito vem com um exercício prático.
- As dicas de IA ajudam você a ler e corrigir erros de Java, principalmente as stack traces verbosas, para que a linguagem pareça menos intimidante desde o primeiro dia.
- Certificado de Java grátis ao concluir o curso. Um sinal confiável para vagas de backend, Android ou em empresas onde fluência em Java conta.
Perguntas frequentes sobre aprender Java
Java é fácil de aprender?
Java é mais verboso do que linguagens de script como Python ou JavaScript. Todo programa precisa de uma classe, os métodos são declarados com tipos explícitos e você compila antes de rodar. O lado bom é que essa rigidez ensina bons hábitos desde cedo. O curso explica por que cada parte existe, o que faz a verbosidade parecer menos arbitrária.
Quanto tempo leva para aprender Java?
Os fundamentos de Java geralmente podem ser aprendidos em uma ou duas semanas de prática diária. Para criar projetos reais com segurança, reserve de um a três meses, dependendo do seu ritmo.
Devo aprender Java ou Python primeiro?
Escolha pelo objetivo, não pela dificuldade. Python é mais curto de escrever e ótimo para dados, scripts e AI. Java é o padrão para Android, backends corporativos e bases de código de equipes grandes — e a tipagem estrita ensina fundamentos de OOP que se aplicam em qualquer lugar. Sem um alvo específico, com Python você se sente produtivo mais rápido.
Dá pra aprender Java de graça online?
Sim. O curso interativo de Java é gratuito — lições, exercícios de código, questionários e um certificado de conclusão. O editor roda no navegador, então você não precisa instalar o JDK localmente para começar a programar em Java.
Preciso instalar o Java para fazer o curso?
Não. Todo exercício de Java compila e roda no servidor, em um ambiente isolado, e a saída aparece ao lado do seu código. Sem JDK, sem IDE, sem configuração de projeto.
Recebo um certificado de Java no final?
Sim. Ao concluir o curso de Java, você recebe um certificado de conclusão gratuito. Não é uma certificação universitária, mas é um sinal verificável de que você passou por um curso de Java estruturado e interativo, com exercícios reais de programação.