Java基本数据类型的转换
1、自动转换
自动类型转换是指:数字表示范围小的数据类型可以自动转换成范围大的数据类型。
byte---short----int ----long--float---double
类型 | 默认值 | 占用存储空间(byte) | 大小(bit) | 范围 |
---|---|---|---|---|
byte | 0 | 1字节 | 8位 | -127~128(-2^7~2^7-1) |
short | 0 | 2字节 | 16位 | -32768~32767(-2^15~2^15-1) |
int | 0 | 4字节 | 32位 | -2147483648~2147483647(-2^31~2^31-1) |
long | 0 | 8字节 | 64位 | -9223372036854774808~9223372036854774807(-2^63~2^63-1) |
char | 空格 | 2字节 | 16位 | \u0000~\uFFFF |
float | 0.0f | 4字节 | 32位 | 1.4E-45~3.4028235E38 |
double | 0.0(d) | 8字节 | 64位 | 4.9E-324~1.7976931348623157E308 |
boolean | false | 1字节 | 8位 | true、false |
float和double的最小值和最大值都是以科学记数法的形式写的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 10^3 =3140,3.14E-3 就是 3.14 x 10^-3 =0.00314。
转换中的知识点:
java中整数类型默认的int类型;小数类型默认的是double类型;
Java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析:
char 可以当做一中特殊的整数类型,char可以自动类型转换成int;
int无法转换为boolean,boolean 类型不能转换成任何其它数据类型;
小数类型转为整数类型,小数会被舍弃,出现精度损失,所以需要强制转换;
class Demo{
public static void main(String[] args){ //定义一个字节类型 byte b = 1;
//基本数据类型在计算的时候, 数值常量默认是int int b1 = b + 1; short b2 = 12;
//byte, short , int, char, 四种类型只要是发生计算都会自动的把结果提升成int类型 int b3 = b + b2;
//定义一个char类型, 字符和int类型可以自动的转换 char c = 'a'; int i1 = c + 1;
System.out.println(i1); //char类型转换int类型参考ASCII表 可得 i1 = 98
int x = 2147483647; int y = 12; //int long float, double 自身来计算的时候没有类型的提升,如果超出范围了就会出现精度的损失。这种情况,一般把第一个数据转换成范围大的数据类型再和其他的数据进行运算。 int z = x + y; System.out.println(z);
//int long float, double 不同的类型来计算的时候没有类型的会向大的表数范围提升、 float f = 1.3f; //int类型和float类型计算转换成float float f1 = f + y; double d = f + 1.3; // 12.5f是表示float类型的常量, 小的表数范围的常量或者变量可以自动的向大的表数范围的类型转换 double d1 = 12.5f; double d2 = y;
short s = 5; //大的表数范围的值不能自动的赋值小的表数范围的变量 s = s + 5; } } |
2、强制转换
当大容量类型的变量向小容量的类型去转换需要强制转换。
class Demo3{
public static void main(String[] args){
int i = 999; //数值类型的转换的前提是精度不会损失 byte b = (byte)i; System.out.println(b);
//定义long类型 long l = 10000; int j = (int)l; System.out.println(j); //小数类型的强转 float f = 199.5f; //转换成int, 小数转换成整数,就是把小数去掉 short i1 = (short)f;
System.out.println(i1);
//double向float转换 double d = 10.4; float f1 = (float)d; System.out.println(f1);
//字符 的转换 char c = 'a'; int x = c; System.out.println(x);
int y = 98; char c1 = (char)y; System.out.println(c1); } } |
隐式类型转换
当将占位数少的类型赋值给占位数多的类型时,java自动使用隐式类型转换(如int型转为long型)
显式类型转换
当把在级别高的变量的值赋给级别低变量时,必须使用显式类型转换运算(如double型转为float型)
注:char a = 'S'; char 后面赋值要用单引号,因为是字符型数据类型
String a = "I AM FINE"; String 后面赋值要用双引号,因为是字符串数据类型