1.背景知识
1.基本数据类型的数值的表述范围:
double>float>long>int>short/char>byte(其中float>long的原因:由于浮点数的存储方式与整型不同)
2.基本数据类型占内存:
double = long>float = int>short=char>byte
3.注释:Java基本数据类型的类型转换,是根据基本数据类型的表述范围的大小来操作的
2.类型转化(基本数据类型)
1.自动转换:小的转换给大的(从数值的表述范围来讲)
例子
public class leixingzhuanhuan {
public static void main(String[] args){
int a = 10;//定义表述范围较小的变量a
long b ;//定义表述范围较大的变量b
b = a;//将int类型的a赋值给b,就是将int类型的a转换成long类型的b
}
}
2.强制转换:大的转换给小的(从数值的表述范围来讲)
错误例子
ublic class leixingzhuanhuan {
public static void main(String[] args){
long a = 10;//定义表述范围较大的变量a
int b ;//定义表述范围较小的变量b
b = a;//将long类型的a直接赋给b
}
}
注释:本例子为错误例子,当我们想要将表述范围的变量转换成表述范围小的变量时,并不能直接进行直接转换,例如本例中:b =a
正确例子:
public class leixingzhuanhuan {
public static void main(String[] args){
long a = 10;//定义表述范围较大的变量a
int b ;//定义表述范围较小的变量b
b = (int)a;//首先通过(int)a的形式将long类型的a强行转换成int类型,然后在赋给b
}
}
注释:正确的方法:首先通过(int)a的形式将long类型的a强行转换成int类型,然后在赋给b
3.特殊情况讲解:
1.当int和double发生运算时(就是小表述范围的类型变量和达表述范围的类型变量参与运算时)
结果变成数值表述范围大的类型
public class leixingzhuanhuan {
public static void main(String[] args){
double a = 10.0;
int b = 10;
System.out.println(a+b);
}
}
运行结果
2.windows有一本字典(用ASCII编码对应不同符号,0到65535,每个整数代表一个字符)如果整数不超过65535 ,char 和 int是可以混合赋值的
例子
public class leixingzhuanhuan {
public static void main(String[] args){
char a = 20320;
int b = '你';
System.out.println(a);
System.out.println(b);
}
}
运行结果
代码注解:当我们打印被赋值20320的a时,输出结果是汉字“你”,而打印被赋值汉字“你”的b时,输出结果是20320,这充分说明了char类型和int类型在一定范围内是可以混合赋值的