Article image
Fernando Araujo
Fernando Araujo29/10/2025 09:15
Compartilhe

Como um iniciante em Java pode aprender com seus próprios erros básicos

  • #Java

Sumário

 

1. Introdução

2. Programação em Java

3. Cometendo erros comuns de programação em Java

4. Dicas para evitar erros em Java

5. Considerações finais

6. Referências

  

1 – Introdução

  image

Quando eu me graduei em Computação, em 1996, não tinha visto Java na universidade, pois tinha começado, em 1992, com Pascal. Anos depois, Java virou novidade (hype mesmo!) e os novos alunos já começavam aprendendo programação com Java no primeiro semestre do curso.

Eu acabei me interessando pela linguagem e aprendi sozinho por um livro de Deitel na época, Java – Como Programar, 4ª Edição, o qual ainda tenho guardado (na figura acima, o livro da esquerda).

Depois de várias versões deste livro, os irmãos Deitel ainda continuam a lançar livros sobre Java - Java com IA Generativa, de 2025 (na figura acima, o livro do centro).

Eu acho os livros de Deitel e família muito completos e didáticos. Além da clareza, eles dedicam algumas seções específicas à boa programação. Por exemplo, há seções para:

·        Dicas de desempenho;

·        Dicas de portabilidade;

·        Observações de engenharia de software;

·        Observações sobre a aparência e funcionamento.

 

Além destas, têm outras 3 que considero um caminho das pedras para os iniciantes:

·        Boas práticas de programação;

·        Erros de programação comuns ;

·        Dicas de prevenção de erro.

 

Este artigo apresenta erros comuns típicos da linguagem Java e seleciona algumas dicas destas 3 seções do livro do DEITEL [1], Java Como Programar, 8ª Edição (na figura acima, o livro da direita), de 2010, aquelas mais relevantes para um iniciante na linguagem Java, embora o livro apresente dezenas de dicas adicionais nestas seções.

 

 2 – Programação em Java

 Java não é uma linguagem de programação fácil para um iniciante. Como ela é puramente orientada a Objetos (OO), o iniciante precisa ser apresentado a este conceito antes de se envolver com a lógica de programação básica (algoritmos, estruturas de controle, variáveis etc.)

 Na minha opinião, para aprender a programar, melhor seria começar com uma linguagem que oferecesse o paradigma procedural (estruturado), como Python ou Javascript. Só depois, ele aprenderia Orientação a Objetos.

 O livro usado como fonte para este artigo (e todos os livros de programação de autoria de Deitel) inclui muitas dicas de programação, para ajudar o leitor a focalizar aspectos importantes do desenvolvimento de um programa. Estas dicas são fruto de 70 anos de programação e experiência pedagógica dos autores e constam de (ver figura seguinte):

 ·        Erros comuns de programação – Visam reduzir a probabilidade de que estes erros aconteçam;

 ·        Dica de prevenção de erro - Sugestões que descrevem aspectos do Java, evitando que bugs apareçam nos programas;

 ·        Boas práticas de programação - Técnicas para a criação de programas mais claros, mais compreensíveis e mais fáceis de manter.

 

image

Segundo DEITEL [1], os erros de programação podem ser caracterizados em:

·        Erros de sintaxe (ou erros de compilação) - ocorrem quando o compilador encontra o código que viola as regras da linguagem (isto é, sua sintaxe). O compilador apresentará uma mensagem de erro e impedirá o programa de compilar. Por exemplo, deixar de colocar as duas chaves de um bloco de instruções;

·        Erros de execução (ou de runtime ou de lógica) – nos erros de lógica fatais, os programas são encerrados imediatamente sem realizar seu trabalho com sucesso. Por exemplo, erro de divisão por zero. Nos erros de execução não fatais, os programas chegam à sua conclusão, mas podem produzir resultados incorretos.

  

3 – Cometendo erros comuns de programação em Java

 Imagine que você é um iniciante em programação e decidiu aprender usando a linguagem Java. Logo no primeiro programa, o famoso “olá, mundo”, já se depara com um monte de erros.

 Versão I - Sem o método main:

public class olamundo
{
         System.out.println("Olá, mundo!");
}

  

Resultado da compilação, usando o GDB Online Debugger (https://www.onlinegdb.com):

 Compilation failed due to following error(s).

OlaMundo.java:3: error: expected

           System.out.println("Olá, mundo!");

                            ^

OlaMundo.java:3: error: illegal start of type

           System.out.println("Olá, mundo!");

                             ^

  

Aí, você corrige o erro da falta do main.

 Versão II - inclusão do método main

public class olamundo
{
         public static void main(String[] args) {
                     System.out.println("Olá, mundo!");
         }
}


Resultado da compilação:

OlaMundo.java:1: error: class main is public, should be declared in a file named olamundo.java

public class main

 

Em Java, o nome do arquivo-fonte (aqui, OlaMundo.java) deve ser igual ao nome da classe (aqui, olamundo, só com minúsculas) definida no início do programa. Por convenção do Java, as classes são escritas usando CamelCase.

 Finalmente, você faz a correção do nome da classe (OlaMundo) e compila novamente.

 Versão III – correção do nome da classe OlaMundo

public class OlaMundo
{
         public static void Main(String[] args) {
                     System.out.println("Olá, mundo!");
         }
}

 

Resultado da compilação:

 Olá, mundo!

 ...Program finished with exit code 0

 

 O programa “Olá, mundo!” é o programa mais básico em Java que a gente pode escrever. Estes exemplos mostram 2 dos erros mais comuns ne programação em Java:

·        Esquecer o método main;

·        Desconsiderar maiúsculas e minúsculas em identificadores;

 

Feliz com a primeira execução sem erros, você continua seu aprendizado em Java e escreve um segundo programa, ainda bem simples:

 public class MeuNome {
 public static void main(String[] args) {
     String nome = null; 
     System.out.println(nome); 
 }
}

 

Resultado da compilação:

 Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "<local1>" is null

       at MeuNome.main(MeuNome.java:4)

 

Este é outro dos erros mais comuns em Java. O erro NullPointerException significa que o programa tentou acessar algo que não existe. A variável nome foi declarada, mas não aponta para uma instância de String. A correção é simples. Basta inicializar a variável nome com um string válido.

 Versão corrigida:

public class MueNome {
 public static void main(String[] args) {
     String nome = "Fernando"; 
     System.out.println(nome.length()); 
 }
}

  

Compilando novamente, o resultado é:

 8

 ...Program finished with exit code 0

 

 Animado, mas nem tanto, você parte para seu terceiro programa:

public class ImprimeNumero {
 public static void main(String[] args) {
     int numero = 10;
     System.out.println(numeros); 
 }
}

 

Resultado:

 Compilation failed due to following error(s).

Main.java:4: error: cannot find symbol

       System.out.println(numeros);

                          ^

 symbol:  variable numeros

 location: class Main

 

 Mais um erro tradicional de Java. É um erro de compilação, não de execução.

O compilador não consegue encontrar o símbolo numeros porque a variável declarada foi numero (sem o “s”). Este erro acontece quando o compilador não reconhece uma variável, método ou classe — geralmente por erro de digitação ou falta de declaração. Para corrigí-lo, basta corrigir o nome da variável no comando print.

Versão corrigida:

public class ImprimeNumero {
 public static void main(String[] args) {
     int numero = 10;
     System.out.println(numero); 
 }
}


Compilando , o resultado é:

 10

 ...Program finished with exit code 0

  

Já desanimado com erros tão bobos, você tenta se animar com um quarto programa simples:

public class ImprimeNumeros {
 public static void main(String[] args) {
     int[] numeros = {10, 20, 30};
     System.out.println(numeros[3]); 
 }
}

 

O resultado:

 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

       at ImprimeNumeros.main(ImprimeNumeros.java:4)

 

Ok! A variável foi definida, o nome é o mesmo dentro do print, o que deu errado dessa vez? Bem, o comando print tenta imprimir o valor de números[3], que seria o quarto valor do array. Só que ele foi definido com apenas 3 posições ( {10, 20, 30} ), posição 0, posição 1 e posição 2.

Um dos erros mais comuns do Java, ArrayIndexOutOfBoundsException ocorre quando o programa tenta acessar um elemento com um índice inexistente em um array (lista), ocorrendo também com strings (StringIndexOutOfBoundsException).

 É sempre bom verificar o tamanho de um array antes de acessá-lo, usando o código abaixo:

 for (int i = 0; i < numeros.length; i++) {
 System.out.println(numeros[i]);

image

 

Depois de tantos erros básicos, você se pergunta como pode aprender alguma coisa errando assim?

Bem, programação se aprende errando, corrigindo e testando. Se você escrever um programa longo que funcione de primeira, desconfie da lógica dele. Isso não é tão comum!

Cada erro ensina alguma coisa:

·        “cannot find symbol” – mostrou que os nomes dos identificadores devem ser digitados corretamente;

·        NullPointerException – você tentou usar um objeto que nunca existiu;

·        ArrayIndexOutOfBoundsException – mostrou que as listas têm limites e que “posição 3 não é o mesmo que terceiro elemento.

 

Ou seja, programar é mais sobre entender a lógica por trás de cada linha do que decorar comandos. É preciso:

·        inicializar variáveis antes de usá-las;

  • planejar o fluxo dos comandos de seleção (if e else);
  • escrever métodos curtos e claros.

  

4 – Dicas para evitar erros em Java

 Toda linguagem está sujeita a ter erros básicos no seu código, como a digitação errada de uma palavra-chave (pirntln ao invés de println), omissão de um dos delimitadores de um comando (chaves, parênteses), falta de ponto e vírgula, etc. Mesmo assim, outros erros básicos podem ocorrer.

 Na verdade, o erro é tão comum em programação que o livro do DEITEL [1], indicado anteriormente, lista dezenas de erros, dicas de prevenção de erros e boas práticas de programação, justamente para que o programador saiba o que fazer para sair de situações de erros e aprender com elas.

Os erros a seguir são numerados por capítulos do livro [1] e foram selecionados para este artigo apenas do Capítulo 2 (Introdução aos aplicativos Java), relevantes para um aprendizado básico de Java para um iniciante:

  

4.1 - Erros de programação comuns

 São erros básicos que todo programador iniciante encontra no início da sua jornada. Reconhecê-los e aprender a evitá-los ajuda a seguir uma jornada mais tranquila.

 image

 

Erro 2.2 – Não respeitar as ocorrências de letras minúsculas e maiúsculas em identificadores, pois o Java faz essa diferenciação.

Por exemplo, media, Media e MEDIA são identificadores diferentes.

 

Erro 2.3 – Usar um nome de arquivo que contém uma classe do tipo public diferente do nome da classe. Estes nomes devem ser idênticos, com o arquivo tendo a extensão .java e respeitando letras maiúsculas e minúsculas.

Por exemplo, a classe public OlaMundo deve ser codificada em um arquivo chamado OlaMundo.java.

 

Erro 2.4 – Deixar de casar as chaves, em pares correspondentes.

Por exemplo, o correto é usar as duas chaves, delimitando os comandos entre elas:

 main() {

 }

 

OBS. - Esquecer um ou os dois delimitadores de comentários (/* e */), também dará erro, ou de algum dos parênteses de funções e comandos.

 

Erro 2.5 – Omitir um ponto-e-vírgula para finalizar uma instrução, quando for necessário.

Por exemplo, nesta instrução, o ponto-e-vírgula é obrigatório:

 System.out.println(“Olá, mundo!”);

  

Erro 2.9 - Confundir o operador de igualdade com o operador de atribuição. O operador de igualdade ( == ) deve ser lido como “é igual a”, e o operador de atribuição ( = ) como “obtém” ou “obtém o valor de”. Para evitar confusão, o operador de igualdade pode ser lido como “duplo igual” ou “igual igual”.

Por exemplo:

numero1 = numero2 é uma atribuição;

numero1 == numero2 é uma comparação.

 

Erro 2.10 – Escrever um ponto-e-vírgula imediatamente após o parêntese direito da condição em uma instrução if (ou em um for).

Por exemplo, na instrução abaixo, o ponto e vírgula após o parêntese é um erro, pois ele cria um comando vazio, que não faz nada caso a condição seja verdadeira:

 if ( numero1 == numero2 );

{

   System.out.println(“São iguais!”);

}

 

O livro do DEITEL [1] apresenta dezenas de dicas para o programador evitar cometer erros e também de boas práticas de programação. Algumas delas podem ser usadas em qualquer linguagem de programação, não apenas em Java. Eu selecionei algumas aqui, apresentadas adiante:

  

4.2 - Dicas de prevenção de erros

 As dicas a seguir também são numeradas por capítulos do livro [1] e foram selecionadas para este artigo de alguns capítulos, relevantes para um aprendizado básico de Java para um iniciante:

  image

Dica 2.1 (dica 1 do capítulo 2) - Quando você digitar uma chave de abertura, ou chave esquerda, {, imediatamente digite a chave de fechamento, ou chave direita, }, reposicione o cursor entre as chaves e dê um recuo para começar a digitação do corpo. Essa prática ajuda a evitar erros devidos à ausência das chaves. Muitos IDEs inserem os colchetes para você.

 

Dica 2.2 - Ao aprender a programar, às vezes é útil “quebrar” um programa funcional para você poder familiarizar-se com as mensagens de erro de sintaxe do compilador. Essas mensagens nem sempre declaram o problema exato no código. Quando encontrar essas mensagens de erro de sintaxe, você terá uma ideia do que causou o erro. [Tente remover um ponto-e-vírgula ou chave do programa e recompile o programa para ver as mensagens de erro geradas pela omissão.]

 OBS. - Eu mesmo já escrevi um artigo aqui tratando desse assunto, acessadas em ARAUJO [2], mas usando exemplos na linguagem C, ao invés de Java.

 

Dica 4.3 - Inicializar variáveis locais quando são declaradas ajuda a evitar erros de compilação que poderiam surgir de tentativas para utilizar variáveis não inicializadas, embora o Java não exija estas inicializações em declarações.

 

Dica 5.3 - Os loops infinitos ocorrem quando a condição de continuação do loop em uma instrução de repetição nunca se torna false. Para evitar essa situação, garanta que a variável de controle é incrementada (ou decrementada) a cada iteração do loop.

 

Dica 5.4 - Embora o valor da variável de controle possa ser alterado no corpo de um loop for, é bom evitar, pois pode levar a erros sutis.

 

Dica 5.5 - Não utilizar variáveis de tipo float (ou double) para realizar cálculos monetários precisos. A imprecisão dos números de ponto flutuante pode causar erros. Aprenda como utilizar números inteiros para realizar cálculos monetários precisos. O Java também fornece a classe java.math.BigDecimal para realizar cálculos monetários precisos.

 

Dica 7.2 - Ao escrever um código para fazer loop por um array, assegure que o índice de array é sempre maior que ou igual a 0 e menor que o comprimento do array. A condição de continuação do loop deve impedir o acesso a elementos fora desse intervalo.

  

4.2 - Boas práticas de programação

 As práticas a seguir são numeradas por capítulos do livro [1] e foram selecionadas para este artigo de vários capítulos, relevantes para um aprendizado básico de Java para um iniciante. Algumas foram condensadas em seleções por assunto (por exemplo, legibilidade com espaços):

image

 

Boa prática 1.1 - Escreva seus programas Java de uma maneira simples e direta. Isso é às vezes chamado KIS (“Keep It Simple”, ou seja, “mantenha a coisa simples”). Não “estenda” a linguagem tentando usos bizarros.

 OBS. - Meu professor de programação usava o termo KISS (“Keep It Simple, Stupid”, ou seja, “mantenha a coisa simples, estúpido”)

  

Seleção de boas práticas - LEGIBILIDADE, com linhas e espaços em branco

 Boa prática 2.2 - Utilize linhas e espaços em branco para aprimorar a legibilidade do programa.

 OBS. - Lembre-se: o código-fonte é feito para programadores lerem, não computadores. Logo, ele deve ser legível para humanos.

 

Boa prática 2.8 - Coloque um espaço depois de cada vírgula (,) em uma lista de argumentos para tornar os programas mais legíveis.

 

Boa prática 2.12 - Colocar espaços em qualquer um dos lados de um operador binário faz com que eles se destaquem, tornando o programa mais legível.

 

Boa prática 3.2 - Coloque uma linha em branco entre as declarações de método para separar os métodos e aprimorar a legibilidade do programa.

 

Boa prática 4.6 - Diferentemente dos operadores binários, os operadores unários de incremento (i++, ++i) e decremento (i--, --i) devem ser colocados ao lado dos seus operandos, sem espaços no meio.

 

Boa prática 5.1 - Coloque linhas em branco acima e abaixo das instruções de controle de repetição e seleção e recue os corpos da instrução para aprimorar a legibilidade.

  

Seleção de boas práticas - LEGIBILIDADE, com MAIÚSCULAS e MINÚSCULAS

 Boa prática 2.3 - Por convenção, inicie o identificador de cada nome de classe com uma letra maiúscula e inicie cada palavra subsequente do identificador com uma letra maiúscula.

 

Boa prática 2.11 - Por convenção, identificadores de nomes de variáveis iniciam com uma letra minúscula e cada palavra no nome depois da primeira palavra inicia com uma letra maiúscula. Por exemplo, o identificador de nome da variável primeiroNumero inicia a sua segunda palavra, Numero, com uma letra N maiúscula.

 

Boa prática 6.1 - Utilize somente letras maiúsculas nos nomes das constantes de enumeração. Isso destaca as constantes e nos lembra de que as constantes de enumeração não são variáveis.

 

Boa prática 6.2 - Usar constantes de enumeração (como Status.VENCEU, Status.PERDEU e Status.CONTINUE) em vez de valores literais (como 0, 1 e 2) torna os programas mais fáceis de ler e manter.

 

Boa prática 7.2 - Variáveis constantes também são chamadas constantes nomeadas. Frequentemente, elas tornam os programas mais legíveis que os programas que utilizam valores literais (por exemplo, 10) — uma constante identificada como ARRAY_LENGTH indica claramente seu propósito, enquanto um valor literal poderia ter diferentes significados com base em seu contexto.

  

Seleção de boas práticas - LEGIBILIDADE, com PARÊNTESES e CHAVES

 Boa prática 2.13 - Utilizar parênteses redundantes em expressões aritméticas complexas pode torná-las mais fáceis de ler.

 

Boa prática 4.4 - Sempre utilizar as chaves em uma instrução de controle if...else (ou outra) ajuda a evitar uma omissão acidental, especialmente ao adicionar instruções à parte if ou à parte else mais tarde. Para evitar omitir uma ou as duas chaves, digite as chaves de abertura ou fechamento de blocos antes de digitar as instruções individuais dentro das chaves.

  

5 – Considerações finais

 Aprender a programar é uma verdadeira jornada, parecida com o aprendizado de um jogo ou de um idioma. É preciso aprender sobre os elementos constituintes, as regras para juntá-las, e praticar bastante para fixar as ações.

 A escolha da linguagem depende da vontade de cada um, mas a jornada fica mais fácil se ela for uma linguagem de fácil aprendizado, como o Python. Algumas pessoas escolhem começar com Java, uma linguagem orientada a objetos, verbosa e considerada de aprendizado mais difícil.

 Independentemente da linguagem, o iniciante deve saber que programação consiste em escrever código, executá-lo e corrigir os possíveis erros que normalmente aparecem.

 Então, é bom ele ir se acostumando com os erros que vão aparecer, desde o início. Alguns erros vão se repetir muitas vezes, outros são mais raros. Conhecer os erros mais comuns e aprender técnicas para evitá-los é uma boa técnica de aprendizado.

 Em geral, os livros reforçam bem estes tipos de erros, buscando uma programação mais limpa e códigos mais claros para aqueles que vão lê-lo mais tarde.

 Este artigo procura mostrar como o iniciante pode apreender a programar melhor conhecendo alguns erros básicos e como evitá-los. Para isso, eu selecionei erros comuns, dicas para evitá-los e boas práticas de programação apresentados em um livro sobre Java dos programadores DEITEL [1].

 Reforço que os conhecimentos mostrados aqui para a linguagem Java podem (e devem) ser replicados para qualquer outra linguagem, com poucas alterações.

 Finalmente, não desanime ao começar obtendo muitos erros. Depois de algum tempo, os erros vão diminuir e logo estará buscando a perfeição. Não que você vá conseguir (não vai, ninguém vai!), mas acertará mais do que errará! Esse é o caminho do dev profissional!

  

6 – Referências

[1] Paul DEITEL, Harvey DEITEL. Java – Como Programar, 8ª Edição. Pearson Education, 2010.

[2] Fernando ARAUJO. <Direto ao Ponto 70> Aprendendo com os erros do “Hello, world”. Disponível em <https://web.dio.me/articles/direto-ao-ponto-70-aprendendo-com-o-hello-world-b4cb530208ae?back=/articles>. Acesso em: 22/10/2025.

 

Compartilhe
Comentários (1)
DIO Community
DIO Community - 29/10/2025 14:36

Excelente, Fernando! Que artigo cirúrgico, histórico e essencial sobre Erros Comuns de Iniciantes em Java! Você tocou no ponto crucial da jornada Java: a frustração inicial causada pela sintaxe rigorosa e a necessidade de persistência.

É fascinante ver como você aborda o tema, usando sua experiência pedagógica para desmistificar os erros clássicos e as boas práticas dos irmãos Deitel.

Qual você diria que é o maior desafio para um desenvolvedor ao trabalhar com um projeto que usa o padrão MVC?