• Java基本类型与类型转换咋就这么烦?


    在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。(一个字节等于8个bit)

    1.整型
    类型              存储需求     bit数    取值范围      备注
    int                 4字节           4*8 
    short             2字节           2*8    -32768~32767
    long              8字节           8*8
    byte              1字节           1*8     -128~127

    2.浮点型
    类型              存储需求     bit数    取值范围      备注
    float              4字节           4*8                  float类型的数值有一个后缀F(例如:3.14F)
    double          8字节           8*8                       没有后缀F的浮点数值(如3.14)默认为double类型

    3.char类型
    类型              存储需求     bit数     取值范围      备注
    char              2字节          2*8

    4.boolean类型
    类型              存储需求    bit数    取值范围      备注
    boolean        1字节          1*8      false、true

     

     1 package com.RainFool.Test;
     2 
     3 /**
     4 * <p>Title: Cast</p>
     5 * <p>Description: 本例用来在博客园上解释类型转换</p>
     6 * <p>Company: LTGames</p> 
     7 * @author RainFool
     8 * @date 2014年7月1日
     9 */
    10 public class Cast {
    11     public static void main(String [] args) {
    12         /*
    13          * Widening conversion 扩展转换对于Java中的基本类型基本都能自动进行,
    14          * 也就是说占用字节数低的类型可以自动向占用字节数高的类型转换(除了boolean、byte)
    15          */
    16         
    17         byte b = 0;
    18         char c = 'A';
    19         short st = 65;
    20         //byte、char、short向int自动转换
    21         int i1 = c;
    22         int i2 = b;
    23         int i3 = st;
    24         /*
    25          * 同样的,int也可以向double转换,在此不再赘述
    26          */
    27         
    28         /*
    29          * narrowing conversion窄化操作比较复杂,在此只总结我所验证的
    30          * int类型可以在特定条件(高字节向低字节)下自动进行窄化转换,在强制进行类型转换的时候会对数值直接截断
    31          * double,float不可以自动转换为int,因为浮点数和普通数字之间的差别比较大
    32          */
    33 //        short st4 = 1024 * 32;//编译报错,short类型有一个符号位所以这里用2^15测试
    34         short st4 = 1024 * 32 - 1;//不报错,发生了窄化操作的自动转换,值为32767
    35         short st5 = (short)(1024 * 32);//不报错,发生了窄化操作的强制转换,值为-32768
    36 
    37 //        char c4 = 1024 * 64;//编译报错,char类型无符号所以用2^16测试
    38         char c4 = 1024 * 64 -1;//不报错,发生了窄化操作的自动转换
    39         
    40 //        byte bt4 = 128;//编译报错
    41         byte bt4 = 128 - 1;//不报错,发生了窄化操作的自动转换
    42         byte bt5 = (short)(128 - 1);//不报错,在强制将int转换为short后发生了窄化操作的自动转换
    43         
    44         
    45          /*
    46           * 总结:非浮点数之间如果数值在范围内,可以自动进行转换,不管是窄化还是扩展转换
    47           */
    48     }
    49 }
    -----------------------------------------------------

    Github:

    https://github.com/RainFool
  • 相关阅读:
    vue-修改vue项目运行端口号
    任正非521央视采访全文
    是施压还是真的决裂?
    贸易战风波继续
    华为对封杀的态度和格局
    美国封锁对华为的影响
    布鲁克斯法则 (Brooks's Law)
    2019第20周日
    如何让自己走的更远
    如何应对中年危机
  • 原文地址:https://www.cnblogs.com/RainFool/p/3817943.html
Copyright © 2020-2023  润新知