JAVA基础之类型转换

😹 作者: gh-xiaohe
😻 gh-xiaohe的博客
😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!

🚏 类型转换

🚀 自动类型转换

什么是自动类型转换,为什么要学习自动类型转换?

  • 类型范围小 的变量,可以直接赋值类型范围大的变量。
public class TypeDemo1 {
    public static void main(String[] args) {
        // 目标:理解自动类型转换  类型范围小的变量赋值给类型范围大的变量
        byte a = 12;
        int b = a; // 发生了自动类型转换
        System.out.println(a);
        System.out.println(b);
    }
}

在这里插入图片描述

🚬 自动类型转换的底层原理

在这里插入图片描述

🚬 自动类型转换的其他形式

在这里插入图片描述

public class TypeDemo1 {
    public static void main(String[] args) {
        // 目标:理解自动类型转换  类型范围小的变量赋值给类型范围大的变量
        byte a = 12;
        int b = a; // 发生了自动类型转换
        System.out.println(a);
        System.out.println(b);

        int age = 23;
        double db = age; // 自动类型转换    age变量有4个字节  double变量 有八个字节 无影响 小数 23.0
        System.out.println(db);

        char ch = 'a'; // 00000000 01100001  两个字节
        int code = ch; // 00000000 00000000 00000000 01100001  四个字节
        System.out.println(code);
    }
}

在这里插入图片描述

🚬 总结
  • 为什么要进行类型转换?
    • 存在不同类型的变量赋值给其他类型的变量
  • 自动类型转换是什么样的?
    • 类型范围小 的变量,可以直接赋值类型范围大的变量。

🚄 表达式的自动类型转换

  • 在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。
    在这里插入图片描述
🚬 注意事项:
  • 表达式的最终结果类型由表达式中的最高类型决定。
  • 在表达式中,byte、short、char直接转换成int类型参与运算的。
  • why? 为什么 byte 需要当成int 来运算 自己定义时,不会超出范围,但是两个数值 进行运算时 超出范围的概率很大
public class TypeDemo2 {
    public static void main(String[] args) {
        //目标:掌握表达式的自动类型转换的规则。
        byte a = 10;
        int b = 20;
        double c = 1.0;
        double rs = a + b + c;
        System.out.println(rs);

        double rs2 = a + b - 2.3;
        System.out.println(rs2);

        // 面试题
        byte i = 100;
        byte j = 120;
        int k = i + j; //
//        byte k1 = i + j; //在表达式中,byte、short、char是直接转换成int类型参与运算的。 所以在用 byte 接范围小 
// why? 为什么 byte 需要当成int 来运算 自己定义时,不会超出范围,但是两个数值 进行运算时 超出范围的概率很大
        System.out.println(k);
    }
}

在这里插入图片描述

🚬 总结
  • 表达式的自动类型转换是什么样的?
    • 小范围的类型会自动转换成大范围的类型运算
  • 表达式的最终结果类型是由谁决定的?
    • 最终类型由表达式中的最高类型决定
  • 表达式的有哪些类型转换是需要注意的?
    • byte、short、char直接转换成int类型参与运算的。

🚒 强制类型转换

🚬 场景

在这里插入图片描述

🚬 问题
  • 类型范围大的数据或者变量,不能直接赋值类型范围小的变量,会报错。
🚬 强制类型转换
  • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量。

在这里插入图片描述

public class TypeDemo3 {
    public static void main(String[] args) {
        // 目标:理解强制类型转换,并使用。
        int a = 20;
        byte b = (byte)a;
        System.out.println(a);// 20
        System.out.println(b);// 20

        int i = 1500;
        byte j = (byte) i;
        System.out.println(j); // -36 数据丢失 byte 1个字节 -128 ~ 127

        double score = 99.5;
        int it = (int) score;
        System.out.println(it); // 99
    }
}

在这里插入图片描述

🚬 强制类型转的底层原理

在这里插入图片描述

🚬 注意事项
  • 强制类型转换 可能造成数据(丢失)溢出;
  • 浮点类型强转为整型,直接丢掉小数部分,保留整数部分返回。
🚬 总结
  • 什么是强制类型转换?
    • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量。
      在这里插入图片描述
  • 强制类型转换有哪些需要注意的?
    • 可能出现数据丢失。
    • 小数强制转换成整数是直接截断小数保留整数。

在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gh-xiaohe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值