java的数据类型的转换

时间:2023-03-09 16:56:31
java的数据类型的转换

一:java的数据类型转换除布尔类型boolean(不能转换)有两种:<一> 自动转换; <二> 强制转换

<一>、自动转换:就是将小的数据类型自动转换成大的数据类型。如:int与byte计算时,byte(-128~127)自动的转换成int(-2147483648~2147483647)的类型。

  0.1、基本数据类型自动转换:
              byte->short,char -> int -> long      
              float -> double
              int -> float
            long -> double
             记住小可转大,大转小会失去精度!!!
   <1> byte的转换:
       
        byte   a=120;
        byte   b=a+80;  //提示:从int类型(指:80)转换成byte的类型可能会损失精度
        System.out.println(b);
     思考: byte   b=a+80  与  byte   b=120+80有什么不同?
          byte   b=a+80中的a是变量,不可确定的值,运算会损失精度。byte   b=120+80的120、80是个常量,只要这两个常量不超过byte的225的范围,就不会报错。 
  <2> char 字符转换
       char id='a';  a=97
       int i=id+3;  
      System.out.println(i);  //100
  
   <3>记住int:  int 一旦达到最大值,它不会提升其类型,而是直接损失精度。
      int  id=2147483647;
      int g=id+1;
       System.out.println(g);  //-2147483648
     为什么会是负的-2147483648的呢?
       原因是:2147483647的二进制是:0111  1111     1111  1111     1111  1111     1111  1111
                    如果+1之后它的二进制是:1000  0000     0000  0000     0000  0000     0000  0000  转换成十进制之后:-2147483648
  <4>任何整数类型的long类型做运算都会转化为long类型
       byte i=12;
        long u=100;
       long num=i+u;
     System.out.println(num);  //112
  <5>小数类型float和double与整数类型运算都会自动转换成小数类型。