Atribuicoes de Tipos PrimitivosEm Java (e na maioria das linguagens), utilizamos o sinal de igualdade (=) para fazer atribuicoes de valores em variaveis. Esse operador e chamado de operador de atribuicao, e ja o utilizamos para fazer atribuicoes de valores literais nas licoes anteriores.Voce pode atribuir a uma variavel primitiva um valor literal, o resultado de uma expressao, o valor contido em outra variavel do mesmo tipo ou o resultado de algum metodo (veremos mais sobre metodos adiante), desde que esses valores sejam do mesmo tipo.int x = 8; //Atribuicao de um literalint y = x * 3; //Atribuicao de uma expressao (variavel + literal)int z = x + y; //Atribuicao de uma expressao (variavel + variavel)Quando atribuimos valores literais as variaveis dos tipos numericos inteiros (byte, short, int, long e char), obedecemos as seguintes regras:Atribuicoes diretas para byte, char, short, int, desde que os valores nao extrapolem os limites numericos de cada tipo:byte b = 127;b = -128;short s = 32767;s = -32768;int i = 2147483647;i = -2147483648;No caso do tipo char, e importante saber que, alem de atribuirmos caracteres, podemos atribuir valores numericos inteiros nao negativos de 0 a 65535.char c = 65535;c = 0;Sabemos que em Java um valor literal numerico sem ponto flutuante e do tipo int independente da faixa de valores.Entao e importante saber que nao seria possivel incluir esses valores descritos acima nas variaveis dos tipos byte, char e short devido a esses valores ocuparem 32 bits na memoria. Isso nao acontece porque, no momento da compilacao, esses valores sao convertidos implicitamente para os tipos correspondentes.No caso do long, podemos fazer atribuicoes diretas de valores inteiros, e quando um valor ultrapassa a faixa de valores tamanho do tipo int, devemos utilizar o sufixo L ou l para indicarmos que esse valor e do tipo long.long l = 2147483647;l = 2147483648L;Quando atribuimos valores literais de ponto flutuante (float e double), obedecemos as seguintes regras:Atribuicoes em float necessitam do uso do sufixo f ou F, pois em java todo literal de ponto flutuante e considerado como tipo double. Tambem e necessario que o literal esteja dentro da faixa de valores do float para evitar erros de compilacao.Atribuicoes diretas double desde que a faixa de valores nao extrapole o tamanho do tipo double.float f = 12.89899889980f;double d = 1256893.5;Quando atribuimos valores em variaveis como resultado de expressoes matematicas, devemos obedecer as seguintes regras:Para dados numericos, prevalece o tipo de maior tamanho. Por exemplo:O calculo de int com int retorna int.int multiplicacao = 2147 * 2147; // iqual a 4609609 O calculo de int com long retorna long.long soma = 90 + 50L;O calculo de int com float retorna float.float subtracao = 5 + 58.508f;O calculo de long com float retorna float.float divisao = 10L / 3.0f;O calculo de float com double retorna double.double d = 10f / 3.0;Verificamos nos codigos citados que a ordem de prioridade e do maior para o menor tipo, ou seja: em calculos matematicos, sempre prevalecera o resultado com o tipo de maior tamanho.Conversoes de tipos primitivosMuitas vezes precisamos fazer calculos e guardar o resultado