【问题标题】:Assigning int to byte in java [duplicate]在java中将int分配给字节[重复]
【发布时间】:2021-05-18 11:59:06
【问题描述】:

在java中,可以有:

byte b = (int) 2;

java 自动将 int 转换为 byte 的地方。另一方面,如果我们这样做:

int a = 2;
byte b = a;

这将给出一个错误,指出所需的类型是 byte 但提供了 int。

请问如何理解为什么自动转换在int类型的字面量分配给byte类型的变量时起作用而在字面量被int类型的变量替换时不起作用的原因?

提前致谢!

【问题讨论】:

  • 我认为这是因为byte 也可能是char,而char 无法自动转换为int
  • 因为a 不是常量,编译器将其视为“任何 int”,因此不能保证它适合字节或者它不是很大。在 (final int a = 2;) 前面加上一个 final 修饰符,它会起作用
  • @OHGODSPIDERS 谢谢,我认为这更有意义,您能否将您的评论转为答案?

标签: java


【解决方案1】:

有就好了

byte b = (int) 2;

因为 2 被转换为 int 并且与它相同

byte b = 2;

以下也有效

int a = 2;
byte b = (byte) a;

【讨论】:

    猜你喜欢
    • 2016-10-25
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多