我遇到了下面的 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 (字符)
。
我相信 byte
到 char
的转换实际上首先要经过一个隐式的扩大转换——所以它真的是这样的:
byte b = -1;
int tmp = b; // tmp = -1
char c = (char) tmp; // c = '\uFFFF'
这有什么帮助吗?
关于java - 这个java代码背后的逻辑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500523/