Nível de conhecimento necessário para compreensão do artigo: iniciante. Você está estudando a missão Java Syntax e mais próximo de seus níveis iniciais.
Você acabou de começar a aprender Java. Você é bombardeado com termos como se fosse uma cornucópia. Você está carregado com toneladas de informações técnicas e às vezes fica confuso em três pinheiros. Acredite, como você já se envolveu com programação, SEMPRE SERÁ ASSIM (neste momento, uma risada sinistra soa fora da tela, e uma voz baixa, cortada no meio da frase, sussurra “Corra... salve-se antes é tarde demais..."). Bugs irão assombrá-lo pelo resto de sua vida de programação, mesmo se você for o melhor desenvolvedor. No entanto, isso não é tão assustador quanto parece.
Se você acabou de começar a aprender JavaRush, provavelmente já encontrou os problemas levantados no artigo. De qualquer forma, receberíamos comentários descrevendo os problemas que você teve nos primeiros meses de aprendizado de Java. |
Problema de nível 0: Confusão com o operador de comparação (==) e o operador de atribuição (=).
Este é um problema muito comum para quem muda de outras linguagens de programação. E em geral, desde o ensino fundamental nos acostumamos com o fato de que
(=)
se trata de um sinal de igual. Um truque simples que pode ser usado para lembrar é este: se você sabe que só se preocupa com um dos valores (você atribui um ao outro), você usa um único
=
sinal " ", caso contrário, se você se preocupa com todas as variáveis e valores (você os compara) você precisa de um
==
sinal " " duplo.
Problema: Usando o operador de comparação (==) para testar a equivalência de strings
O que fazer: Lembre-se de que
nenhum objeto Java pode ser verificado quanto à equivalência usando(==)
, pois esse operador foi projetado para testar a igualdade de tipos primitivos.
Para objetos você precisa usar o
.equals()
. E
String
na linguagem Java nada mais é do que um objeto (e
immutable
).
Um objeto marcado como Immutable é um objeto cujo estado não pode ser alterado após a criação. Em Java , isso significa que todos os campos de instância de uma classe são marcados como final e são primitivos (ou também immutable ). |
Problema: concatenação de strings em um loop
Não tente fazer isso sozinho! Cada vez que strings são concatenadas, um novo objeto é criado
String
(como descobrimos acima, strings
immutable
são imutáveis). Em algum momento você ficará sem memória ou o programa começará a demorar muito para ser concluído.
Solução. Use
StringBuilder
em vez disso
String
ao concatenar conteúdo em um loop. A classe
StringBuilder
é usada quando você precisa fazer muitas alterações em uma sequência de caracteres. E tais linhas, ao contrário
String
, não são
immutable
.
Problema: NullPointerException
Este tipo de exceção ocorre quando tentamos usar um ponteiro nulo
null
quando na verdade precisamos de um objeto real.
Todos os tipos primitivos possuem valores padrão. Então, y int é 0 e y boolean é false . O valor padrão de qualquer tipo de referência, ou seja, objetos, é null . Não é um objeto ou tipo, é um valor especial. O que essencialmente significa “não há nada aqui”. |
O que fazer: Se o seu código for escrito de tal forma que em algum momento seu objeto possa aceitar o valor
null
, você precisará adicionar uma “verificação de
null
”, especialmente se você não estiver criando o objeto sozinho. Lembre-se também de que é melhor retornar coleções vazias do que um conjunto de
null
's. Também seria bom adicionar validação para getters e setters.
Problema: por algum motivo o loop if/while/for não funciona
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
O que há de errado aqui? É simples: um ponto e vírgula extra estragou o sangue de centenas de milhares de programadores Java novatos. Bem, você não precisa disso depois
if ()
. Do ponto de vista da linguagem, tal sintaxe é bastante aceitável, portanto o compilador não reclamará disso. Mas isso encerra a instrução condicional e o código dentro do bloco
{}
nunca satisfará a condição acima.
Solução: lembre-se da lógica do design. O sinal “
;
” significa o fim de um determinado bloco, mas aqui tudo está apenas começando.
Problema: Tentando acessar variáveis de membros não estáticos a partir de métodos estáticos (como main)
Solução . Este problema está relacionado com a compreensão do próprio conceito
static
. Se um método estiver marcado com esta palavra, significa que não precisamos instanciar a classe para chamar o método principal. Então a solução é ter um bom entendimento da “estática” e entender sua essência.
Problema: Tentando reinventar a roda desenvolvendo bibliotecas e ferramentas já existentes
Solução. Na verdade, não é um grande problema. Para um iniciante, este é um exercício mais útil. Porém, se você quiser focar no resultado, por exemplo, criando um banco de dados de assinantes conveniente, então procurar um assinante na lista telefônica é apenas um dos resultados de sua aplicação. Neste caso, não há necessidade de escrever um algoritmo de busca binária. Use um existente (garantimos que alguém já o escreveu antes de você e está nas bibliotecas padrão). Portanto estude as bibliotecas padrão Java na documentação do Oracle. Aprenda com o Google, acostume-se a ler Stack Overflow e tire dúvidas na
ajuda do JavaRush ! ...Claro, esses não são todos problemas dos iniciantes. Descreva o seu nos comentários!
Você está interessado em ler artigos relacionados a Java? Junte-se ao grupo de desenvolvedores Java .
Há muitas coisas interessantes aqui.
GO TO FULL VERSION