java中的基础数据包括:byte、short、int、long、float、double、char、boolean。
其中byte、short、char运算时数据类型会先默认为 int 。因此,如果想用他们的运算结果赋值给同种类型需要强制转换,例如:
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;//这样会报错,因为 b1 + b2 的数据类型为 int 型,
byte b4 = (int) b1 + b2;//正确
char a1 = ‘1‘;
char a2 = ’2‘;
System.out.println(a1+a2);
输出结果为:99
解释:因为char再运行的时候会默认为 int 类型, '1' 的unicode编码为 49 ,'2'的Unicode编码为 50,因此结果 为 99。
对于整数型基础数据的byte、short、int而言,如果赋值的常量在其范围内则可以正常赋值,如果赋值的常量超过其范围则会报错。但是如果是将表达式的值赋值给某一变量,如果超出范围,则会从最小的边界数继续增。因为计算机存储的时候是二进制存储。全1之后再加1就成了全0。
例如:
byte b1 = 127;//最大边界值
byte b2 = 128;//越界报错
byte b3 = b1 + 1;//此时 b3 = -128成
其他几种数据原理一样。
对于浮点型数据 float 和 double 而言,可以通过 printf 来控制小数点的位数,此时数据保存的原则是 四舍五入,但是如果是将 其数据强制转换成 整型数据,数据保存的原则是 取整保存。
由于计算机存储浮点数是按照 IEEE754标准储存,因此浮点数都是近似值。并且 float 的存储范围要大于 long 型。
float 型 在赋值时需要 在常量后面加 f/F
long 型 在赋值时需要在常量后面加 l/L