为什么要进行类型转换?
在编程过程中由于需要,可能会存在需要将一个变量赋值给与之类型不相同的变量的情况
一、自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量
例如int类型可以直接赋值给long类型
package edu.dhu.one;
public class Var {
public static void main(String[] args) {
byte a=0b01;
a++;
int b=a;//这里发生了自动类型转换
System.out.println(a);
}
}
自动类型转换的底层原理:
byte a=00000001
int b=00000000 00000000 00000000 00000001
二、表达式的自动类型转化
在一个表达式中,存在不同类型的变量,小范围类型的变量会自动转换成当前较大范围的类型再运算
表达式的最终结果的类型由表达式中最高类型决定
在表达式中,byte,short,char是直接转化成int类型进行运算的
三、强制类型转化 (大范围变量转换成小范围变量)
例如:
int a=20;
byte b=a;//此时是大范围向小范围转化,计算机无法进行自动类型转化
强制类型转换:a=(要转换的类型)b;
底层原理:b=a
a: 11111111 11111111 11111111 1111110
b: 11111110
强制类型转换会将大范围的变量的低位赋值给小范围变量
因此:
强制类型转换可能会造成数据丢失;
浮点型转化成整型,直接丢掉小数部分,保留整数部分