数据类型的转换

java在进出赋值或者运算时,精度小的数据类型自动转换为精度大的数据类型,这个过程叫自动转换。

  数据类型按精度大小排序如下:

       char——int——long——float——double

       byte——short——int——long——float——double

 

细节1:byte  、short、 char 他们三者可以计算,在计算时结果首先转换为int 类型;

  byte s1  =  1

  short  a1  =  2

  short s2  =  s1 + a1    //编译时会报错,原因是s1+a1 的 结果为  int类型,而把  int类型 转换为 short类型 会报错

 

细节2:把具体数值赋值给byte时,先判断该数值是否在byte的范围内,再进行类型的判断,如果是就可以

  如:byte a=20;//  20是一个具体数值,所以先考虑范围。而不是先考虑类型。 

    char  c  =   a;//编译时会出现错误,原因是 byte 类型不能转换为 char 类型。

 

细节3:有多种类型的数据运算时,系统会先自动将所有数据转换成容量大的那种数据类型,然后再进行计算。

  int  a  = 10;

  float  c  =  a + 1.1  //编译时会报错,原因是1.1是double类型,而float 类型的精度没有double 的高。

 

细节4:boolean不参与转换

细节5:自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

  byte s1 =10;

  short s2 = 100;

  int s3 = 50;

      float s4  =  1;

  double  s5 = 12;

float   a = s1+s1+s3+s4+s5; // 编译时会出现错误,原因是在这个五个数相加中,数据类型最大是double类型。

  所以结果会为double类型,double类型的值赋给 float类型会报错。 

double  a = s1+s1+s3+s4+s5;

 

细节6:byte 、short、char 三者之间不会自动相互转换。

 

 

二、基本数据类型强制转换

  注意相关细节:

  1.进行的数据大小:从大到小,就需要使用到强制转换

  2.强制转换符号只针对与最近的操作数有效,往往会使用小括号提升优先级

    int  x = (int)10*3.5+6*1.5;  //编译会出现错误,原因是最后的值double类型,double赋值给int类型会报错;   

    Int y =(int)(10*3.5+6*1.5);  //编译可以进行。对后面的结果进行一个强制转换为int类型。

      System.out println(y);

  3.char 类型可以保存int的常量值,但不能保存int的变量值,需要进行强制转换

      char c1 = 100;

      int m =  100;

      char  c2 = m;  //编译时会出现错误,上面的为100,所以m是一个int类型,int类型赋值给char,(高精度向低精度转换)需要进行强制转换,否则编译会出错误。

       char c3  = (char)m;

      System .out.println(c2);

  4.byte和short类型咋进行运算时,当做int 类型处理。

 

posted @   捞月亮的渔夫  阅读(504)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示