java - 这个java代码背后的逻辑是什么

标签 java

我遇到了下面的 java 行,并对它的输出感到困惑。你能解释一下这段代码背后的逻辑吗

System.out.println((int)(char)(byte) -1);

输出:

65535

最佳答案

嗯,这相当于:

byte b = -1;
char c = (char) b; // c = '\uFFFF' - overflow from -1
int i = c; // i = 65535

原来显式转换为int只是让它调用System.out.println(int)而不是System.out.println (字符)

我相信 bytechar 的转换实际上首先要经过一个隐式的扩大转换——所以它真的是这样的:

byte b = -1;
int tmp = b; // tmp = -1
char c = (char) tmp; // c = '\uFFFF'

这有什么帮助吗?

关于java - 这个java代码背后的逻辑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500523/

相关文章:

java - 在java中添加两个数字的解释器程序

java - 在单独的类中运行 @DataJpaTest、Spring Data Test 和 Swagger Config

java - 在 native 代码中处理信号 - 在终端中使用 SIGSEGV 导致 JVM 崩溃

java - 方法中一次只能有一个字符串

java - java中的递归,哪一个最好?

java - Play Framework (Java) 的数据库优先 ORM,具有自动 DB 模型生成功能

java - 从一个 JVM 读取另一个 JVM 的输入流

java - 在控制台中使用在 Eclipse 中创建的包运行代码

java - 以良好的格式打印元素

Windows 上的 Java 堆栈跟踪