先了解一下基本得数据类型,以整数类型为例,如下表:
数据类型长度范围byte1字节-128127short2字节-3276832767int(默认)4字节-21474836482147483647long8字节-xxxxxx(xxxxxx-1)
** 范围的计算方法**:根据以上数据我们进行分析总结规律如下:
-128=-2^7 ; 127=2^7-1
-32768=-2^15 ; 32767=2^15-1
........
最小值=-2^(字节✖8-1)] 最大值=2^(字节✖8-1)-1
根据数据我们得出了数据类型的范围计算方法,我们再深度思考一下,为什么这样算那?为什么非要乘以它的位数-1次方哪,而不是乘以位数次方,说到这,我们不由得需要回顾一下计算机基础知识。首先我们需要知道以下两点:
- 计算机内部数据和运算均采用的是二进制;
- 计算机中数据分为有符号数和无符号数,对于有符号数,计算机规定用最高位来表示符号。“0”表示正数,“1”表示负数;
通过以上两点我们也可猜到JAVA中的数据也是有符号的,最高位代表正负,所以:
最小值=-2^(字节✖8-1)] 最大值=2^(字节✖8-1)-1
最大值减一是因为数字0。
强制转换使用条件
每种数据类型都有自己得取值范围,当我们进行数据转换时,由小范围➡大范围时编译不会报错,但当由大范围➡小范围时,即使你输入得数是1(即数据都在两个数据类型范围内),编译时也会报错,因为数虽然没有溢出,但数据类型的位溢出了,此时编译不会通过,需要强制转换。由此可见,强制转换是在大范围得数据类型向小范围的数据类型转换中使用的。
注意事项:当我们对数据类型不进行声明时,对于整数类型默认为int类型、浮点类型默认为double类型等.
强制转换的格式(以double向int转换为例)
public class Sumer{
public static void main(String[] arrgs){
double a,b; //将a,b的数据类型命名为double.
int c;
a=12;
b=13;
c=int(a+b)
System.out.println(c);
}
}
因此强制转换的格式为:
变量名1=(变量名1的数据类型)(变量运算)
版权归原作者 JAVA小笨熊 所有, 如有侵权,请联系我们删除。