java - 为什么在 java 中允许从 long 到 byte 进行窄转换

标签 java casting byte long-integer

我们可以将较大的数字类型(例如 long)转换为较小的数字类型, 比如一个字节。对于 exp:

long l = 130L;
byte b = (byte)l;

编译时,即使缩小的值太大,我们也不会出现运行时错误 对于类型(在本例中为字节)。 理想情况下,编译器应该会报错,但它为什么会起作用?

最佳答案

这是可行的,因为您明确告诉编译器允许它。您可以通过在 long 变量之前添加 (byte) 来实现。

Java Language Specification (java 7) 解释了当您进行所谓的缩小转换时会发生什么。它只会丢弃最重要的位。

关于java - 为什么在 java 中允许从 long 到 byte 进行窄转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500017/

相关文章:

java - 用不同的值替换文本文件的第二列(正则表达式)

java - 获取 "maximum value entered by user"吗?

java - 转换参数如何影响 java 中的覆盖和重载方法?

Java 将 00010 打印为 8

java - 如何在mysql查询中找到byte[]?

java - Hibernate 对象和 Java 反射

java - 空结果集上的 Spring Data JPA 聚合函数

java - 在 Java 中使用反射转换类

C - BitArray - 设置 uint64_t 的单个位

Java:BufferedImage 到字节数组并返回