|
O diagrama abaixo representa a "hierarquia" de conversão.
Vemos neste diagrama que somente os tipos byte, short e char podem ser convertidos para o tipo int. Vemos também que todos os tipos podem ser convertidos para o double. O diagrama torna-se agora compreensível para os demais tipos. Tanta definição, tanto "decoreba"... mas como converter? Existe a possibilidade de ocorrerem erros? Vejamos um exemplo:
Início do arquivo casting.java
|
public class casting {
public static void main(String[] args) {
char c;
byte b;
short s;
int i;
// Conversão de Short para Byte
s = 200;
b = (byte)s; // ocorrerá perda de dados
System.out.println(b);
// Conversão de Byte para Short
b = 100;
s = (short)b;
System.out.println(s);
// Conversão de Char para Int
c = 'a'; // código ASCII = 97
i = (int)c; // utilizará o código ASCII
System.out.println(i);
}
}
|
Fim do arquivo casting.java
|
Quando fazemos (short)b , estamos convertendo a variável b em short. Caso não existe a obediência da hierarquia mostrada neste artigo, haverá perda de dados (inconsistência de dados). Um detalhe interessante em casting de tipos primitivos é a conversão utilizando o tipo CHAR, é utilizado o seu código ASCII no processo.
Existe a possibilidade de convertermos objetos. Neste caso, poderíamos tratar não simplesmente de uma conversão e sim de um novo molde ao objeto convertido. É como se pudéssemos moldar um objeto CachorroDeGuarda para um objeto CachorroJaTreinado. Existe a necessidade de haver semelhança entre essas classes (objetos).