我遇到了java line下面,并对其输出感到困惑.你能解释一下这段代码背后的逻辑吗?
System.out.println((int)(char)(byte) -1);
Run Code Online (Sandbox Code Playgroud)
输出:
65535
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
嗯,这相当于:
byte b = -1;
char c = (char) b; // c = '\uFFFF' - overflow from -1
int i = c; // i = 65535
Run Code Online (Sandbox Code Playgroud)
真的是int在原版中的显式转换只是为了调用System.out.println(int)而不是System.out.println(char).
我相信byte,以char转换实际上经历了隐式扩大转换第一-所以它是这样的真:
byte b = -1;
int tmp = b; // tmp = -1
char c = (char) tmp; // c = '\uFFFF'
Run Code Online (Sandbox Code Playgroud)
这些帮助有用?
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |