zoukankan      html  css  js  c++  java
  • 七 数据类型转换

    数据类型转换

    1 自动类型转换(隐式转换)

      long  num = 100;  其中100默认为int,左右类型不一样,自动转化为long型

    特点:代码不需要特殊处理,自动发生转换

    规则:数据范围从小的转换成大的

    注意:float范围比long大

    2 强制类型转换(显式转换)

      int   num  =  100L;  报错,100L范围比int大,不能自动转换

      int   num  =  (int)100L;先将100L强制转换成int型再赋值

    注意事项:

    1. 一般不推荐强制转换,可能发生数据溢出或者精度缺失 
    •  整型   数据溢出    int   num = 6000000000L;   60亿超出int范围,会报错,int 21亿左右

               int   num = (int)6000000000L;  60亿强制转化为int型,不报错,但是num数据不是60亿,发生了数据溢出

    • 小数   精度缺失    int   num  = (int)3.5;  结果为3,丢掉小数部分,不是四舍五入

        2.byte ,short , char 可以进行数学运算

      char   A  =  ‘A’;   输出时结果为A

      输出A+1 时,结果为66,所有数据在底层都是一个二进制数字

    char类型在运算时,先变成int类型(翻译)再计算

      byte  num1  =  40;

      byte  num2  =  50;

      byte  result  =  num1 + num2;    输出result时出错,num1,num2在运算时先变成int型再运算,所以result应为int型

      byte  result  =   5 + 8;  输出result为13,没报错,右边为两个常量,编译后等于byte  result = 13;叫做编译器的常量优化

           3. 布尔类型不能进行类型转换


     补充:  byte  num = 30;

          输出num 结果为30

         byte  num = 128;

          输出num 报错 ,128超过了byte的范围,30从int型赋给byte型没出错,是因为在数据值没超过byte,short,char范围时,

          javac编译器会隐含地补上一个(byte)(short) (char)强转

          char  zifu = 65;    输出zifu为A


  • 相关阅读:
    【洛谷P2014】选课【树形DP】【背包】
    【洛谷P2014】选课【树形DP】【背包】
    【洛谷P1939】【模板】矩阵加速(数列)
    【洛谷P1939】【模板】矩阵加速(数列)
    小X的液体混合【并查集】
    小X的液体混合【并查集】
    【JZOJ5914】盟主的忧虑【LCA】【并查集】【BFS】
    【JZOJ5914】盟主的忧虑【LCA】【并查集】【BFS】
    Silverlight 4:数据验证-今天的提示-第1部分
    酷的菜单按钮
  • 原文地址:https://www.cnblogs.com/bigvegetableB/p/13516250.html
Copyright © 2011-2022 走看看