Escolar Documentos
Profissional Documentos
Cultura Documentos
CASTING
CASTING
DIVISÃO DE ENGENHARIA
ENGENHARIA INFORMÁTICA
Programação I
2° Ano – Turma B
Curso Diurno
Discente:
- António Milton Mugabe
- Carlos Ricardo Boene
- Elton Filimão Langa
Docente:
- MSc Lourenço Roberto
Tete, 2021
António Milton Mugabe
Carlos Ricardo Boene
Elton Filimão Langa
Tete, 2021
Índice
Introdução ...................................................................................................................................4
Implícita ..................................................................................................................................7
Explícita ..................................................................................................................................8
Exemplo ......................................................................................................................................9
Conclusão ................................................................................................................................. 11
Referências Bibliográficas......................................................................................................... 12
Introdução
A conversão de tipos é o ato de forçar uma expressão a utilizar e retornar um determinado tipo.
Também chamamos esta modalidade de “Casting”. A conversão de um tipo de dado em número
ou em literal é muito comum em situações de programação. Também podemos encontrar casos
que possam gerar erros na conversão de tipos.
No presente trabalho iremos aprofundar mais acerca de Casting (conversões entre tipos), onde
vamos apresentar exemplos, e também podemos ter dois tipos de conversões de tipos, pode ser
implícita ou explicitas, que são conversões especificadas.
A metodologia utilizada para elaboração do presente trabalho foi com base nas pesquisas,
enriquecida com algumas informações obtidas ao longo da realização do mesmo.
Conversões entre tipos
Java não tem problemas para atribuir um tipo int para um double – ele vai tratar o valor como
double. Assim sempre que uma atribuição for efectuada o tipo mais representativo será utilizado.
Entretanto, existem ocasiões onde queremos representar o valor inteiro de um tipo double. Por
exemplo, assim, torna-se necessário converter o tipo, em uma operação chamada de cast. Essa
conversão nada mais é do que indicar o tipo desejado, como no exemplo:
double x = 9.345;
int z = (int)x;
A variável z terá como valor o número 9. As conversões permitidas sem cast são:
byte > short > int > long > float > double e char >int.
Alguns valores são incompatíveis se você tentar fazer uma atribuição direta. Enquanto um número
real costuma ser representado em uma variável do tipo double , tentar atribui-lo a uma variável int
não funciona, porque é um código que diz: "i deve valer d", mas não se sabe se d realmente é um
número inteiro ou não.
double d = 3.1415;
int i = 3.14;
Apesar de 5 ser um bom valor para um int , o compilador não tem como saber qual valor estará
dentro desse double no momento da execução. Esse valor pode ter sido digitado pelo usuário, e
ninguém garantirá que essa conversão ocorra sem perda de valores.
int i = 5;
double d2 = i;
O código acima compila sem problemas, uma vez que um double pode guardar um número com
ou sem ponto flutuante. Todos os inteiros representados por uma variável do tipo int podem ser
guardados em uma variável double, então não existem problemas no código acima.
double d3 = 3.14;
O casting foi feito para moldar a variável d3 como um int . O valor de i agora é 3. O mesmo caso
ocorre entre valores int e long.
long x = 10000;
long x = 10000;
int i = (int) x;
float x = 0.0;
O código acima não compila, pois todos os literais com ponto flutuante são considerados double
pelo Java. E float não pode receber um double sem a perda de informação. Para fazê-lo funcionar,
podemos escrever:
float x = 0.0f;
A letra f, que pode ser maiúscula ou minúscula, indica que aquele literal deve ser tratado como
float.Outro caso que é mais comum:
double d = 5;
float f = 3;
float x = f + (float) d;
Você precisa do casting porque o Java faz as contas e vai armazenando sempre no maior tipo que
apareceu durante as operações, neste caso, o double.
E uma observação: no mínimo, o Java armazena o resultado em um int na hora de fazer as contas.
Até casting com variáveis do tipo char podem ocorrer. O único tipo primitivo que não pode ser
atribuído a nenhum outro tipo é o boolean.
Castings possíveis
Abaixo estão relacionados todos os casts possíveis na linguagem Java, mostrando quando você
quer converter de um valor para outro. A indicação Impl. quer dizer que aquele cast é implícito e
automático, ou seja, você não precisa indicar o cast explicitamente. (lembrando que o tipo boolean
não pode ser convertido para nenhum outro tipo).
Para:
byte short char int long float double
De:
byte ---- Impl. (char) Impl. Impl. Impl. Impl.
short (byte) ---- (char) Impl. Impl. Impl. Impl.
char (byte) (short) ---- Impl. Impl. Impl. Impl.
int (byte) (short) (char) ---- Impl. Impl. Impl.
long (byte) (short) (char) (int) ---- Impl. Impl.
float (byte) (short) (char) (int) (long) ---- Impl.
double (byte) (short) (char) (int) (long) (float) ----
Implícita
• Tamanho de uma variável é maior que o tamanho da variável ou o valor que está sendo
atribuído.
int y = 15;
long x = y;
Explícita
• Tamanho de uma variável é menor que o tamanho da variável ou o valor que está sendo
atribuído.
long y = 15L;
int x = (int) y;
Tipo Tamanho
Boolean 1 bit
Byte 1 byte
Short 2 bytes
chart 2 bytes
Int 4 bytes
Float 4 bytes
Long 8 bytes
Double 8 bytes
Exemplo
/**
* Exemplo de conversão de tipos primitivos utilizando casting.
*/
public class ExemploCasting {
public static void main(String[] args) {
/* Casting feito implicitamente, pois o valor possui um
tamanho menor que o tipo da variavel que irá recebe-lo. */
char a = 'a';
int b = 'b';
float c = 100;
System.out.println(a); //Imprime a
System.out.println(b); //Imprime 98
System.out.println(c); //Imprime 100.0
System.out.println(d); //Imprime 5
System.out.println(e); //Imprime 5.0
System.out.println(f); //Imprime 102
System.out.println(g); //Imprime n
}
}
Conclusão
Durante a realização do mesmo viu que é possível se atribuir o valor de um tipo de variável a outro
tipo de variável, porém para tal é necessário que esta operação seja apontada ao compilador. Pois,
isso chamamos de Casting.
E também possível fazer conversões de tipos de ponto flutuante para inteiros, e inclusive entre o
tipo caractere, porém, vimos que estas conversões podem ocasionar a perda de valores, quando se
molda um tipo de maior tamanho, como um double dentro de um int.
No mesmo vimos que o boolean é o único tipo que não suporta casting, isso por ter um espaço tão
pequeno.
Referências Bibliográficas
1. http://www.caelum.com.br-Java-e-Orientação-a-Objetos.
2. https://universidadejava.com.br/java-Casting-de-tipos-primitivos
3. www.devmedia.com.br/conversões-de-tipos.
4. Claro D. B. e Sobral J. B. M. PROGRAMAÇÃO EM JAVA. Pearson Education.
Florianópolis, SC.