JAVA数据类型的强制转换

先了解一下基本得数据类型,以整数类型为例,如下表:

数据类型 长度 范围
byte 1字节 -128~127
short 2字节 -32768~32767
int(默认) 4字节 -2147483648~2147483647
long 8字节 -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次方哪,而不是乘以位数次方,说到这,我们不由得需要回顾一下计算机基础知识。首先我们需要知道以下两点:

  1.  计算机内部数据和运算均采用的是二进制;
  2. 计算机中数据分为有符号数和无符号数,对于有符号数,计算机规定用最高位来表示符号。“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数据转换,java,后端,数据类型)