Java标准为什么不加入unsigned int类型?

您所在的位置:网站首页 java中int有什么用 Java标准为什么不加入unsigned int类型?

Java标准为什么不加入unsigned int类型?

2023-04-19 16:03| 来源: 网络整理| 查看: 265

unsigned这套类型确实会让程序开发变得复杂一些:

经常纠结整数类型要不要加unsigned, 尤其是不应该有负数的情况, 设计接口的时候更纠结, 很难说实现类会不会需要用到负数.由于不同人设计理念的不同, signed和unsigned类型经常要隐式转换, 是个大坑.signed整数和unsigned整数类型经常会遇到比较和乘除的操作, 不写强转也是坑, 写了强转又显得啰嗦.函数参数的类型匹配规则也带来不小的记忆负担, 如定义了f(unsigned int)和f(long), 但传入了short或int类型的值, 匹配哪一个呢.

高赞回答中说无符号类型"乖乖地加上去了"仅仅是一些API把有符号的整数参数当做无符号来计算而已, 远没到"加入无符号类型"的程度.

有人会问: 整数类型为什么不只保留int和long两种, 甚至只留long一种呢? 我的理解是byte和short仅仅用于节省存储(尤其是数组), 而不是用来计算的(函数的参数和返回值通常也不推荐用), 实际上Java字节码里并没有byte和short类型的计算指令, 这两种类型的计算在内部一律转换成int再算的. 至于需要int类型是因为Java诞生的年代主流是32位CPU, long的计算开销会大不少, 而且当时连C/C++都没把64位整数定义成标准, 而现在即使是64位CPU仍然都保留了32位运算指令, 在执行乘除时比64位更快, 因此32位的int一直都是最最常用的整数类型, 大多数场合无脑用int就好, 如果有unsigned就要费点心智去选择了.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3