类型转换

类型转换

由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。

​ 容量的大小由低到高

低----------------------------------------------------------------->高

(byte,short,char )→ int → long → float → double

(小数的优先级大于整数,所以float只有32位却在64位的long后面)

运算中,不同类型的数据先转化为同一类型,然后进行运算。

强制类型转换

强制转换 :(打算转换成的数据类型)变量名 例如:

int i = 128;
byte b = (byte) i;
System.out.println(b);//-128
public class Demo04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte) i;
        System.out.println(i);  //128
        System.out.println(b);  //-128
        System.out.println("==================分割线===================");
        //可查看java.lang包下的Byte类的源码,可发现byte的取值范围为-128~127,
        //故产生内存溢出,b取得-128的值,原因:在计算机内存存放的数值都是补码形式,第一位为符号位
        //128的二进制是1000 0000,即128的源码为1000 0000,其为正数补码和源码相同,也是1000 0000
        //负数的补码为:符号位不变,其余位取反后再加1,第一是为了能让计算机执行减法:[a-b]补=a补+(-b)补,第二个原因是为了统一正0和负0
        //正零:00000000
        //负零:10000000
        //这两个数其实都是0,但他们的原码却有不同的表示。但是他们的补码是一样的,都是00000000
        // 例如
        int i2 = 129;
        byte c = (byte) i2;
        System.out.println(i2); //129   其补码为1000 0001
        System.out.println(c);  //-127  其二进制位111 1111,则源码为1111 1111,补码为1000 0001
        // 而byte最多只占8位第一位为符号位0代表正,1代表负,根据规定1000 0000是-128的补码

    }
}

强制类型转换适用于 优先级高(容量高)的数据类型优先级低(容量低)的数据类型,即高→低

自动类型转换

自动转换用于由优先级低(容量低)的数据类型优先级高(容量高)的数据类型,即低→高, 不需要任何操作,直接定义即可,例如

int i = 128;
double d = i;   //自动转换      低->高
System.out.println(d);	//128.0
posted @   阿飞bean  阅读(52)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示