Qual é a sintaxe de um casting? Como funciona?

Gostaria de saber como se aplica o casting em uma aplicação java…

quando devo usar e se puderem coloquem um exemplo…

Obrigado e paz aí pra todos!!!

A sintaxe é

(tipo_desejado) expressão.

Ela serve para duas coisas:

  1. Se o tipo desejado e o tipo da expressão forem tipos primitivos, então há uma conversão entre os tipos. e essa conversão pode envolver truncamento ou então omissão de bits.

Por exemplo, (int) 3.5 converte a expressão 3.5 (cujo tipo é double) para um int cujo valor é 3.

  1. Se o tipo desejado e o tipo da expressão forem classes, então é feita uma verificação (em tempo de compilação, se possível, ou então em tempo de execução) se o tipo da expressão é uma subclasse do tipo desejado. Se não for, então é lançada uma ClassCastException.

Por exemplo, se a classe JTextField é uma subclasse de JComponent, então fazer:

JComponent jc = new JTextField();
JTextField jc2 = (JTextField) jc;

Amigo existe dois tipos de casting o narrowing e widening onde a diferença de ambos é que um você força a conversão de long para um int por exemplo(narrowing) e a outra (widening) é uma conversão implicita da JVM de uma variavel de menor tamanho converte para uma de maior tamanho. ex: byte para um short.

Como é feita a conversão ?

Primeiramente você tem que saber o tamanho da variável, mas como assim?

vamos a tabela:

byte-> short -> int -> long -> float -> double
char->

Ou seja, acima como podemos ver um byte é menor que um short , onde a saida sera um short(conversão feita pela JVM)

Obs: O byte e o char sempre iram se transformar em um short(promoção aritmetica)

ex:

.....
byte a = 2;
short b = 1;
System.out.println("O resultado será: " );
System.out.println(a-b);
//A saida sera um short, ok?

Caso queira força a saida da variavel para um tipo desejado a sintaxe que você tem que usar é esta:

variavel = (tipoEscolhido)variavelDeMaiorTipo ;

long a = 2;
int b = 3;
a = (int)b; 
//A saida sera um int, mas lembrando que pode haver perda de dados, visto que estamos transformando a 
//a variavel para um menor tamanho, ok?

Abraços meu velho, espero ter lhe ajudado.

EDIT (Moderador) Só corrigi os termos (to narrow = estreitar, to widen = alargar). Nunca ouvi falar de “noring”, parece um sobrenome nórdico.

Opa desculpa amigo, quando eu tava respondendo voce ja tinha respondido.

Uma errata da minha explicação é que deu a entender que sempre fata a conversao de um int para long etc… onde na verdade irá depender de como voce colocar os atributos, ok?

Abraços!

Ai galera muito obrigado me ajudaram muito vlw mesmo…

Paz de Jah pra todos!!!