Java:字节转换问题

标签 java

我有以下代码:

byte b=10;
System.out.println("Test b:"+b);

该代码已编译并且可以正常运行。但是,我不明白为什么。 10 在这里是文字,它是整数文字(默认为整数)。所以我们在这里进行强制转换,左侧有字节,右侧有整数。这个范围正在缩小为 byte<integer 。据我了解,缩小必须始终是显式转换,否则代码将无法编译。谁能解释一下这段代码为什么有效?

最佳答案

它有效,因为 10 是一个编译时常量。编译器可以推断它符合字节范围,因此它允许赋值。

您可以尝试一下为 byte 变量赋值。例如,如果您这样做

 byte b = 128; 

那么您将收到编译错误,因为 128 不适合 byte 范围。在这种情况下,您可以进行强制转换:

 byte b = (byte) 128;

但最终会出现溢出,并且 b 将被计算为 -128

关于Java:字节转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32088420/

相关文章:

java - 在单个服务器中部署多个 Spring Boot Web 应用程序

java - 以GB为单位分割一个巨大的XML,保留页眉和页脚 - 相同的结构

java - 非公共(public)静态嵌套类?

java - 找不到 Timakeystore.jar

带有 Jersey 的嵌入式tomcat上的java.net.SocketTimeoutException

java - 使用 ExecutorService 时如何避免 "cannot create native threads"?

java - 管理 hazelcast 中模型对象的更改?

java - JTabbedPane 中禁用的选项卡上的单击事件

java - 在 Android 中快速写入大量数据到文件

java - 如何检测来自url的图像是纵向还是横向(Android)