# 类型之间的转换

  1. 大数据类型指的是当前的 基本类型引用类型

  2. 小数据类型指的是大数据类型下的 每个小分类

    参照基本类型:

    整型 浮点型 等等.... 这些都是小数据类型

# 同种小分类下的定义空间之间可以直接赋值操作

int a = 1; int b = a; ~ float x = 3.4; float y = x;

# 大数据类型之间的转换问题

  • 同种大数据类型之间才能发生直接转换

    基本类型 ---- 基本类型之间 可以直接转换(自动 强制

    引用类型 ---- 引用类型之间 可以直接转换(自动 强制

  • 不同大数据类型之间需要间接转换

    基本类型 ---- 引用类型之间 不可以直接转换(间接 -- 包装类 / 封装类

# 保证大数据类型一致的前提下

  • 基本类型 --- 基本类型

    小数据类型相同

    都是整型 都是浮点型等情况下

    byte a = 1;
    int b = a; 
    int c = 12;
    long d = (long)c; // 基础类型
    Integer c = 12;
    long d = c.longValue(); // 包装类型
    //-- 从小空间转换到大空间,会直接自动转换,除了 long 很特殊外 。
    int a1 = 10;
    byte b1 = (byte)a1; 
    long a2 = 235L;
    int b2 = (int)a2;
    //-- 从大空间转换到小空间,需要写(...)来告诉计算机需要强制转换的类型。括号里填 需要强制转换的类型。
    // 或者 ---------------------
    float a_a = 1.9F;
    double a_b = a_a;
    // 自动转换
    double a_c = 26.14;
    float a_d = (float)a_c;
    // 强制转换
    //-- 它两都是精度转换,就是小数位数的区别。
    // 需要注意 --------------------
    int g = 1000;
    byte x = (byte)g;
    //-- 如 1000 这个数值超出 byte 所规定范围的数值,所强制换算下来的值可能会有损失,它只保留最后的 8bit 位。其它类似转换也一样,需要注意!

    小数据类型不同

    从 整型 到 浮点型 等情况下

    // 整型 —— 浮点型:两个比较精确程度 浮点型精确程度更高 可以直接存放整数 反之需要强制转换 。
    int q = 8;
    float z = q; // 直接自动转换
    float a = 1.6F;
    int b = (int)a;
    System.out.println(b);// 需要强制转换
    // 最后输出的是 1 ,因为 int 是只存放整数的。
    /* 整型 —— 字符型:每一个字符都对应这一个 Unicode
    码,例如 'a' ---- 对应的是 97 。
    */
    char x = 'a';
    int y = x; // 直接自动转换 y = 97
    int p = 97;
    char k = (char)p; // 需要强制转换 k = 'a'
    byte j = 97;
    char f = (byte)j; // 注意,byte 转换到 char 也是需要强制的,没有什么数值范围的说法 。

    注:C++ 等语言的布尔型虽然有 1 和 0 代表 true 和 false,但在 Java 里 布尔型的 true 和 false 没有对应的代表 1 和 0 的说法, true 就是 truefalse 就是 false

  • 引用类型 --- 引用类型

    引用类型 后续讲对象时会讲到...