Em [Java](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Java) , as variáveis são [_fortemente tipadas_](https://en.wikipedia.org/wiki/Strong_and_weak_typing#Definitions_of_.22strong.22_or_.22weak.22) , o que significa que você precisa definir o tipo para cada variável sempre que você a declarar. Caso contrário, o compilador lançará um erro no [tempo de compilação](https://en.wikipedia.org/wiki/Compile_time) . Portanto, cada variável possui um ' [tipo de dados](https://guide.freecodecamp.org/java/data-types) ' associado a um dos seguintes:
* Tipo de embalagem: `Integer` , `Short` , `Char` , `Long` , `Boolean` , `Byte` , `Float` , `Double`
* Tipo de referência: `String` , `StringBuilder` , `Calendar` , `ArrayList` , etc.
Você deve ter notado que o **Tipo de Wrapper** consiste em tipos escritos exatamente como o **Tipo Primitivo** , exceto pelo alfabeto capitalizado no início (como o **Tipo de Referência** ). Isso ocorre porque os tipos de invólucro são, na verdade, parte dos tipos de referência mais gerais, mas estão _intimamente ligados_ às suas contrapartes primitivas via [autoboxing e unboxing](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html) . Por enquanto, você só precisa saber que tal tipo de wrapper existe.
Normalmente, você pode _declarar_ (ou seja, criar) variáveis de acordo com a seguinte sintaxe: <_data-type_ > <_variableName_ >;
Você pode _atribuir_ um valor à variável simultaneamente quando a estiver declarando (o que é chamado de _inicialização_ ) ou em qualquer lugar no código depois de a ter declarado. O símbolo **\=** é usado para o mesmo.
Como é evidente no exemplo acima, as variáveis do tipo Primitivo comportam-se de maneira ligeiramente diferente das variáveis do tipo Referência (& Wrapper) - enquanto Variáveis primitivas _armazenam_ o valor real, Variáveis de referência _referem-se a_ um 'objeto' contendo o valor real. Você pode descobrir mais nas seções abaixo.