java - Java 编译器是否将 byte 和 Short 识别为文字?

标签 java literals

我实际上想问的是,如果我写:

byte b=13;
short s=14;

然后右侧的值,即 13 和 14 分别被视为 byteshort Or 仅被读取为编译器的 int 类型。 如果它们分别被读取为字节和短裤那么为什么,

byte b1=13;
byte b2=23;
byte b3=b1+b2;

还有

short s1=14;
short s2=24;
short s3=s1+s2;

在java中是无效语句(短s3=s1+s2;和字节b3=b1+b2;),即使在这两种情况下精度都没有受到影响。

如果编译器只是将它们读取为 int 类型,那么编译器如何维护它们的标识为 byteshort> 类型?

最佳答案

Java 没有字节或短文字。它所拥有的是 implicit assignment conversion当 int 是编译时常量并且在目标类型的范围内时,从 int 到 byte、char 和 Short。

所以,这没问题:

byte b = 13+14; // implicit conversion

但这不是:

void method(byte b) {}

method(13);

也不是这个:

byte b = 13+nonConstant;

关于java - Java 编译器是否将 byte 和 Short 识别为文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837620/

相关文章:

java - JPA EclipseLink - 通过主键维护顺序获取多个对象

c# - 编程中文字的哲学是什么?

c++ - 指向文字的指针?

javascript - JavaScript中数字文字后的字符 'n'是什么意思?

java - char c = 一些整数文字可能会编译,但 float f = 一些浮点文字永远不会编译。为什么?

python - 如何在 python 3 中将字节文字列表转换为字符串文字?

java - Thymeleaf 表单无法处理 org.bson.Document 类型

java - 有哪些可能用于处理复杂配置的轻量级 Java 配置库?

java - 使用 BigDecimal 舍入?

java - 绘制 Rectangle2D 数组时出现空指针异常