Em Java, a conversão do tipo geralmente pode ser encontrada, da definição de variáveis para a cópia, o cálculo de variáveis numéricas para a transferência de parâmetros de métodos, a modelagem entre classes base e classes derivadas, etc. O tipo de conversão pode ser visto em todos os lugares. O tipo de conversão em Java desempenha um papel importante na codificação de Java.
Existem muitos problemas a prestar atenção ao definir variáveis. Se você não tiver cuidado, perderá a precisão ou os tipos incompatíveis.
Por exemplo:
1. Ao definir dados inteiros longos, o sufixo L ou L deve ser adicionado.
LONG L = 123456789012345L
2. Ao definir um único tipo de precisão (dígito significativo de 7-8 bits), o sufixo f ou f deve ser adicionado.
Float f = 12,5f
3. O tipo booleano não pode ser convertido em outros tipos de dados.
Entre eles, geralmente encontramos problemas de conversão do tipo de dados. Os mais comuns são conversão implícita e conversão fundida. Vamos analisá -lo.
Conversão implícita
recurso:
De pequeno a grande, pode ser convertido implicitamente e o tipo de dados será melhorado automaticamente.
byte, curto, char -> int -> longo -> float -> duplo
Nota: Long é 8 bytes e flutuação é de 4 bytes.
Long é um número inteiro, o float é do tipo de ponto flutuante. As regras de armazenamento para números inteiros e pontos flutuantes são diferentes. Lembre -se de que o alcance de longo é menor que o flutuador.
exemplo:
byte a = 10;
int b = a;
Quando intb = a é compilado, a é implicitamente convertido em tipo int.
Casos
recurso:
De grande a pequena (se você souber claramente que os dados podem ser representados por esse tipo de dados, você pode usar o elenco)
Formatar:
(Tipo de dados convertido) Variável ou valor.
Nota: Em geral, o elenco não é recomendado.
Exemplo 1:
int a = 10; byte b = (byte) a;
Quando o byte b = (byte) a é compilado, a é fundido para o tipo de byte.
Exemplo 2:
classe qiangzhidemo {public static void main (string [] args) {byte b = (byte) 130; System.out.println (b); // PRINT Result -26}}Análise:
Dados 130 Padrões para Int Type Data Decimal, Dados,
Etapa 1: Converta Decimal 130 em dados binários.
10000010
Etapa 2: A representação de 130 na memória é a seguinte
Código original: 00000000000000000000000 00000000 10000010
Etapa 3: Encontre o código do complemento do INT130
Como 130 é um número positivo, o código inverso e o código do complemento são consistentes com o código original.
Código do complemento: 0000000000000000000000000 00000000 100000010
Etapa 4: Intercepte o código do complemento, deixando apenas os últimos 8 dígitos.
(byte) O código do complemento dos 130 é: 10000010
Etapa 5: converta este complemento no código original.
Como o bit de sinal (primeiro bit) é 1, o número é um número negativo.
Código inverso: 10000001 (código do complemento-1)
Código original: 111111110 (o bit de símbolo permanece inalterado, o bit de dados é invertido)
Converta em decimal para -126, então finalmente imprima -126.
Exemplo 3:
shorts = 1; s = s +1;
e
shorts = 1; s+= 1;
Existe algum problema? Por que?
Análise:
O primeiro programa relatará um erro: Erro: Incompatível Tipo: Pode haver perdas ao converter de int para curta
Causa: s = s+1; s+1 será implicitamente convertido em tipo int. Quando um tipo int é atribuído ao tipo curto, ele pode ser perdido.
O segundo programa pode ser compilado e executado.
Motivo: S+= 1, embora possa ser considerado s = s+1, ainda há uma diferença. Existe um elenco em S+= 1, ou seja, S = (curto) (S+1), que forçará o valor de S+1 para o tipo curto, para que não haja erro.
resumo:
Se o problema da conversão do tipo de dados ocorrer em alguns mini -programas, podemos ver de relance. No entanto, ao escrever um sistema enorme e ter uma enorme quantidade de dados, esses pequenos problemas podem causar erros do sistema ou até travar, por isso temos que entender o rigor da redação precoce de código.
O conteúdo acima apresenta a conversão implícita básica do Java versus a conversão do elenco, espero que gostem.