• 强制类型转换细节解析


    基础类型范围:

    byte b = 44; //byte占1个字节,取值范围为-128~127(-2的7次方~2的7次方-1)
    char c = 'b'; //当转换为数字时,对应为字符的ASCII码表的十进制数
    short s = 1024; //short占2个字节,-2的15次方~2的15次方-1(-32768~32767)
    int i = 40000; //int占4个字节,-2的31次方~2的31次方-1(-2147483648~2147483647)
    long l = 12463l; //long占8个字节,-2的63次方~2的63次方-1(-9223372036854774808~9223372036854774807)
    float f = 35.67f; //float和double都属于浮点型,double的精度比float更精确

    double d = 3.1234d;

    //-133相反数的源码: 1000 0101
    //反码 0111 1010
    //+1 0111 1011
    //123
    //第一位为0,表示为正数

    d = -133.89d;  //不够取模,负数,执行结果:b1 = 123

    //正数在计算机中表示为原码

    // 原码: 1000 0000
    // 第一位为1,表示负数

    d = 128.89d;  //不够取模,正数,执行结果:b1 = -128

    d = -260.33d;  //够取模(256),执行结果:b1 = -4

    d = 126.44d;  //不够取模,在[-128~127]范围内,执行结果:b1 = 126

    byte b1 = (byte)d;
    System.out.println("b1 = "+b1);

    double类型向byte类型转换的规则如下:

     1 //d截断小数部分,整数部分与byte的区间范围256取模:
     2         // 1.1够取模则取模值
     3         // 1.2不够取模:
     4         //    1.2.1在[-128~127]则取对应的值
     5         //    1.2.2不在[-128~127]
     6         //        1.2.2.1为负数
     7                     //负数在计算机里面显示为补码形式,补码的转换为:
     8                     //1.获取负数对应正数的原码(8位二进制)
     9                     //2.把1的结果按位取反
    10                     //3.把2的结果加1
    11                     //4.3中的第一位为0则为正数,为1则为负数
    12         //        1.2.2.2为正数
    13                     //正数在计算机中表示为原码
    14                     // 原码: 1000 0000
    15                     // 第一位为0则为正数,为1则为负数

    //-33700相反数的源码: 1000 0011 1010 0100
    //反码 0111 1100 0101 1011
    //+1 0111 1100 0101 1100
    //31836
    //第一位为0,表示为正数

    //short占2个字节,-2的15次方~2的15次方-1(-32768~32767),取模65536
    d = -33700.66d;  //执行结果:s1: 31836

    short s1 = (short)d;
    System.out.println("s1: "+s1);

    float f = 35.67f;
    double d1 = f; //目标类型范围比源类型围大,自动转换
    float f1 = (float)d1; //目标类型范围比源类型围小,进行强制转换

    基本类型进行运算时,范围小的类型会自动提升到范围大的类型

  • 相关阅读:
    struts2 显示表格
    设置eclipse默认编码为UTF-8 Set default encoding to utf-8 in eclipse
    java hibernate +mysql demo
    Java项目引入第三方Jar包
    mysql 常用sql
    C# snaps
    sql server 与mysql差异(innodb)
    系统数据监控
    Twitter Bootstrap Grid System
    设计模式之访问者模式
  • 原文地址:https://www.cnblogs.com/celine/p/8228443.html
Copyright © 2020-2023  润新知