Erros semânticos em Java

Muitas pessoas acham que a diferença entre erros semânticos e sintáticos (sintaxe) erros no código Java difícil de entender, mas eles são diferentes. Você pode ver um erro de semântica quando a sintaxe do seu código está correto, mas o uso de código não é correto.

A semântica erro mais comum é uma em que o código utiliza uma variável que não está adequadamente inicializado. Felizmente, o compilador encontra esse erro semântico particular, na maioria dos casos. Aqui está uma lista de outros erros semânticos comuns que você precisa saber sobre.

  • Usando um operador que não se aplica: Em algumas situações, você pode tentar usar um operador que não se aplica a variável ou variáveis ​​em questão. Por exemplo, você não pode usar o operador de incremento (++) com uma variável booleana.

    Versões mais recentes do Java se tornaram hábeis em encontrar esse erro, mas você ainda pode encontrar dificuldade em descobrir exatamente por isso que um erro ocorre quando você usar o operador errado em alguns casos. Por exemplo, MyObj1 == MyObj2 não irá comparar os dois objetos - o operador de igualdade funciona apenas com tipos primitivos.

  • Usando tipos incompatíveis: Este tipo de erro de semântica pode ser complicado porque o sinalizador compilador alguns erros e não outros. Por exemplo, se você tentar atribuir um flutuador a uma variável int, o compilador exibe uma mensagem de erro.

    Por outro lado, se você atribuir um int para uma variável float, o compilador realiza uma conversão automática de tipo para o int para torná-lo um float. O problema com este segundo cenário é que ele pode silenciosamente introduzir erros em seu código, especialmente se você realmente tinha a intenção de usar um float.

  • Perder precisão durante uma conversão: Às vezes você pode aplicar lançando incorretamente. Por exemplo, lançando um float para um int funciona bem, mas com a perda da parte decimal do número.

    Esta perda de precisão pode afetar a saída do seu aplicativo de formas inesperadas e causar a saída para refletir um valor diferente do que você esperava. O compilador nunca encontra esse tipo de erro, porque você tem aplicado especificamente um elenco para a variável e o compilador espera que você saiba o que está fazendo.

  • Executando um elenco impossível: É possível converter-se entre muitos tipos diferentes em Java. No entanto, não importa o quanto você gostaria de converter um valor booleano em um int, Java não vai deixar você fazer isso. O conceito de realizar o elenco é sintaticamente correto, mas ele será aplicado incorretamente, tornando este um erro de semântica que o compilador sempre pega.

  • Aplicando escopo incorretamente: Qualquer variável declarada dentro de um método tem o mesmo escopo - visibilidade para outras partes da aplicação, por outras palavras - como o método. Conseqüentemente, você não pode declarar uma variável int estática privada dentro de um método. Em vez disso, você deve definir a variável global como este:

    classe pública PrivateVar {// Esta declaração works.private static int PrivateInt = 3-public static void main (String [] args) {// Esta declaração não work.private static int PrivateInt = 3}}

Estes são os problemas mais comuns que você deve procurar em seu código. erros semânticos tendem a ser mais difíceis de encontrar do que quaisquer erros de sintaxe, mas não quase tão duro como erros lógicos.

menu