java中long是占8个字节,float占4个字节。哪么
  long a=12345665;
  float b=a;
确不需要强制转换。  为什么呢 ???

解决方案 »

  1.   

    因为java规定 在简单数据类型由低级到高级分别为
    (byte,short,char)--int--long--float--double
    float虽然所占空间小 但是能表示的范围很大 所以不需强制转换
      

  2.   


    1.long a=12345665;
    java中整数默认是int型
    而int型是4个字节
    范围从-2147483648 到 2147483647
    你的12345665是在int型范围内另外,long是8字节,范围比int大,所以int能表示的数字long肯定能表示
    这样的情况下,不需要转换,java中也叫“隐式转换”2.float b=a;
    上面说了,a这个值实际上是在int范围内的
    而int,float都是4字节的
    所以,即便a被隐式转换为了long型,但由于实际数值还是在float范围内,所以不需要转换但是
    如果下面的情况,就不行了
    byte b = a ;
    编译器会说:Type mismatch: cannot convert from long to byte
      

  3.   

        JAVA里的7个数据类型之间的转化,分为自动类型转化和强制类型转化。正如2楼所说,表述范围小的可以想表述范围大的进行自动类型转化: byte->short->int->long->float->double或者是char->int-------->long->float->double   这两种形式都可以进行自动类型转化,这是JAVA里边规定的。就如楼主上边所说,虽然  float  b = a ;但是输出结果是不一样的  是a.0  如果要是占位多的话  ,他可以直接自动截断的。