数据类型的转换
程序员文章站
2024-03-18 21:28:28
...
8种基本数据类型除了boolean类型以外都能转换
1.自动转换
变量在做计算的时候,可能会出现溢出的情况,那么java语言采用自动类型转换的方式来处理。
小的空间的数据类型和大空间的数据类型的数计算会向大的空间的数据类型转换
byte、short、char在计算的时候会自动的提升数据类型成为int
例如:
byte a = 12;
byte b = a + 1;//会报可能损失精度的错误
int b = a + 1;//正确写法
//char类型的数据在运算的时候,每一个char类型的背后都对应着一个数据类型的ASCII码,参与计算的是ASCII码
char c = 'a';
int d = c + 1;结果为100
//int和其他数值的计算也会溢出,int不会提升,而是直接损失精度
int a = 2147483647;
int b = a+1;//不能提升为long
溢出后的结果是-2147483648
//任何的整数类型和long类型做运算都会转换成long类型
long c = 100;
int d = 50;
long e = c+d;
//常量在做运算的时候只要不超出定义的数据类型的范围就不会报错,不会发生类型的自动提升
byte b = 12 + 4;
小数类型自动转换:
float a = 12.5f;
//float类型和常量计算不会有类型提升
float b = a + 1;
//float和float计算不会有类型提升
float c = a + b;
//float和所有整数类型计算都会转换成float
int d = 20;
float f = d + a;
//double和float类型计算会自动的转换成double类型
double m = 150.6;
double n = m + a;
//double和其他的类型的转换和float是一样的
2.强制转换
大空间的数据类型向小空间的数据类型去转换。
语法:(目标数据类型)变量名
强制转换有可能损失精度,因为要转换的变量的值可能超过目标类型的最大值
//把整型强制转换成整型
int i =130;
short s = (short)i;
long n = 120;
byte a = (byte)n;
//把整型转换成字符型
int p = 36;
char h =(char)p;
//字符类型转其他的类型(除了boolean,都可以转换)
char c = 'b';
byte z = (byte)c;
//小数转换成整数,舍弃小数位
float f = 12.7f;
byte m = (byte)f;
//double转换成float
double d = 23.8;
float t = (float)d;