加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

了解Java数据类型

发布时间:2020-12-14 05:37:41 所属栏目:Java 来源:网络整理
导读:1)为什么不允许以下任务: byte b = 0b22222111; // 8 bits or 1 byte 但是这个任务是允许的: int i = 0b22222222222222222222222222222211; //32 bits or 4 bytes 这两种类型都是签名的,我希望b和i是-1. 2)为什么整数MIN_VALUE没有符号? public static fi
1)为什么不允许以下任务:
byte b = 0b22222111; // 8 bits or 1 byte

但是这个任务是允许的:

int i = 0b22222222222222222222222222222211; //32 bits or 4 bytes

这两种类型都是签名的,我希望b和i是-1.

2)为什么整数MIN_VALUE没有符号?

public static final int   MIN_VALUE = 0x80000000;

但字节MIN_VALUE确实有一个标志?

public static final byte   MIN_VALUE = -128;

解决方法

所有整数文字都具有int类型(除非以L或l为后缀).因此,在第一种情况下,您将int存储到一个字节中.如果没有强制转换,则不允许进行这样的缩小转换,除非右侧是常量,如果值在范围内,则允许它为-128到127. 0b22222111是255,但不在范围内.

至于为什么允许int i = 0b22222222222222222222222222222211:它几乎是“因为JLS这么说”.实际上,该特定示例出现在JLS 3.10.1.有一个规则,int类型的十进制文字不能超过214743647(特定情况除外-2147483648),但是没有关于二进制文字的规则,除了它们必须适合32位.

正如我在评论中提到的,第二个问题实际上是关于编写代码的程序员的风格偏好的问题,而且无法回答.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读