Como forma de demonstrar as limitações dos tipos de dados primitivos, observe o código abaixo para o tipo byte:

 
    public class Main {
       public static void main(String[] args) {
           
           byte a = 100;
           
           byte b = 100;
           
           byte c = (byte)(a + b);
           
           System.out.println(c);
       }
    }
    

O referido programa não possui qualquer erro de sintaxe ou semântica computacional. O mesmo compila e executa sem qualquer tipo de erro computacional. O interessante deste exemplo é que a resposta esperada pelo usuário que executa o programa não é a mesma apresentada pelo computador. E o mais instigante é que ambos estão certos: o usuário e o computador, cada um com a sua verdade.

Para o computador, o resultado da soma de 100 + 100 é -56, valor permitido para o tipo de dado byte. Acreditem ou não, esse resultado está correto, para o computador, obviamente. Já, para o usuário, o valor esperado pela soma de 100 + 100 é 200, valor proibido para o tipo de dado byte. O valor 200 não é armazenado na variável “c”, simplesmente porque ele não representa um estado válido, ou seja, um valor válido para a referida variável, uma vez que o tipo byte aceita valores no intervalo de -128 a +127.
Copyright © 2016 AIEC.