1.Java的8种基本数据类型及其所占空间大小:
注意:
①为什么float占4个字节,而long占8个字节,float表示的范围却比long要大得多呢?
/i6223671/article/details/88312191
②boolean类型是否占一位?
③整数默认都是整型,小数默认都是double型,所以表示long型常量时要在后
2.java基本数据类型的初始值
3.Java基本数据类型的范围排序
4.基本类型的赋值与转换
boolean一般不参与其他类型的转换
原则:表示范围大的数据不能向表示范围小的数据赋值,即使被赋值的对象可以装得下这个,数据,但是系统任然会保存:可能存在精度损失
即由上面的那张图,数据类型只能顺着箭头赋值,不能逆着箭头赋值.
那么问题来了~
①.为什么char类型要单独拿出来?
②byte 和short类型赋值给char类型为什么会报错?
③既然整数默认都是整型的,那么为什么byte a = 127没有错误 ;
④这个为什么会报错: byte a = 127 ; byte b = -128 ; byte c = a + b ;
所以:java中byte,short,char在运算的时候都会提升为int,如果输出’a’+1的值为98
⑤为什么:bytea=10; a=a+10.会报错,而a+=10不会报错呢?
隐性转换
底范围和高范围的数据进行运算的时候,会将低范围值的向高范围值的类型转化,而没这种值的类型的变化并不会传递给变量.
例 :
byte a=10;
int b=a;
当编译intb=a 时, a隐式转换为int类型
又如,
int a=2;
double b=5.0;
则输出 b/a的值将为2.5,因为编译的时候,会将a提升为b的类型.
强制转换
特征:从大到小(如果你明确知道数据是可以用该数据类型来表示的,可以用强制转换)注:一般情况下,不推荐使用强制类型转换,因为会损失精度.
格式:(转换后的数据类型)变量或者值。。
例1 :
int a=10;
byte b=(byte)a;
字符串的转换
原则:任何数据类型用’+'与字符串向连都会产生新的字符串.
如: System.out.println(“hello”+‘a’+1); -> helloa1
System.out.println(‘a’+1+“hello”); -> 98helloa
System.out.println(“6 + 6 =” 6 + 6 ); -> 6 + 6 =66(注意运算的顺序)