【问题标题】:Java Byte, what happens when trying to fit a greater number than 127Java Byte,尝试拟合大于 127 的数字时会发生什么
【发布时间】:2017-05-23 07:05:46
【问题描述】:

我是 Java 新手,但我用其他语言编写代码已经有一段时间了。今天我开始研究 Java,我注意到一个看起来很有趣的异常。

当我声明一个字节变量并尝试存储一个小于 -128 或大于 127 的数字时,编译器给我一个错误提示

“类型不匹配:无法从 int 转换为 byte”

现在我确切地知道为什么我不能存储例如 130 字节,但是如果我尝试将值分配给字节,为什么编译器会尝试从 int 转换为字节?

【问题讨论】:

  • 所有数字默认为intdouble,您没有另外说。
  • 可以int 转换为 byte,如果您明确这样做:byte b = (byte)130
  • 顺便说一下,为避免混淆,您看到的是编译错误,而不是Exception。异常是只在运行时抛出的东西。

标签: java int byte


【解决方案1】:

一个字节有 8 位,其范围是 -28-1 到 28-1-1 即 -128 到 127。

这基于以下等式:

-2n-1 到 -2n-1-1,

其中 n 是位数。

您使用的值超出范围,因此需要更大的数据类型,例如int

如果您跨越特定类型的范围,则它会自动被视为int 数据类型。

【讨论】:

  • 本网站不接受 TeX 数学公式,但您仍然可以使用 HTML 获取指数:<sup>...</sup>
  • 谢谢。我与这个网站脱节,所以不知道。
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多