-
预备知识
java中有八大基本数据类型
第一类:整数型
byte short int long
第二类:浮点型
float double
第三类:布尔型
boolean
第四类:字符型
char
不同数据类型所占用的空间大小是不同的
类型 占用字节数量(byte) 取值范围
byte 1 [-128 ~ 127]
short 2 [-32768 ~ 32767]
int 4 [-2147483648 ~ 2147483647]
long 8 [-2 63~263 -1]
float 4 [-2 31~231 -1]
double 8 [-2 63~263 -1]
boolean 1
char 2 [0~65535]
byte a = 12;
int b = 8;
double c = 6.0;
float d = (float)12.8;
注意:在Java中无论变量的数据类型是什么 所赋值的整型变量值默认是int类型 所赋值的浮点型变量值默认是double类型
所以在第一段代码 变量值 12 和 8 都为 int类型 在第二段代码变量值 6.0 和 12.8 都为 double类型(double强制转化为float)
两种转换类型
注意 :浮点型所占的的容量都要大于整形 布尔类型不能进行类型转化
-
小容量转化为大容量为自动类型转换
数据类型的容量关系为
byte < short(char) < int < long < float < double
------------------------------------------
注意:数值类型的可以从小容量自动转化为大容量 字符型的可以向int float double 自动类型转换
示例1
byte a = 8;
short b = a;
System.out.println("b = " + b);int c = 100;
long d = c;
System.out.println("d = " + d);
int e = 200;
double f = e;
System.out.println("f = " + f);float g = 300.0F;
double h = g;
System.out.println("h = " + h);
char i = '人';
int j = i;
System.out.println("j = " + j);
运行结果
------------------------------------------
注意 :byte类型 [-128 ~ 127]和short类型:[-32768 ~ 32767] 不能自动转为char类型 因为char 类型[0~65535] 因为char类型不能表示负数 但可以表示更大范围的正整数
示例2
byte a1 = 98;
short a2 = 520;char i1 = a1;
System.out.println("i1 = " + i1);
char i2 = a2;
System.out.println("i2 = " + i2);
编译结果
-
大容量转换为小容量为强制类型转换
除外特殊情况外 编写时必须添加“强制类型转换符” 但运行时可能出现精度损失 谨慎使用
------------------------------------------
注意:在为变量赋值时 所要赋的值没有超出 byte short char 的取值范围 可以直接将其赋值给byte,short,char 类型的变量
- 示例3
byte a = 120;
short b = 30000;
char c = 40000;System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
运行结果
------------------------------------------
注意:在为变量赋值时 所要赋的值超出 byte short char 的取值范围 进行强制类型转化
示例4
byte a = 128;
short b = 32768;
char c = 65536;System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
运行结果
解决方案
byte a = (byte)128;
short b = (short)32768;
char c = (char)65536;System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
------------------------------------------
注意:除外示例3之外的情况 大容量向小容量转化都要进行强制类型的转换
示例5
byte a = 127L;
System.out.println(a);short b = 32768;
System.out.println(b);float c = 127.0;
System.out.println(c);
运行结果
解决方案
byte a = (byte)127L;
System.out.println(a);short b = (short)32768;
System.out.println(b);float c = (float)127.0;
System.out.println(c);