java代码混乱,编译很好。这个代码是如何工作的?
下面的代码编译并将1
作为输出,这让我有点困惑。我试过javap
这个,但从那里我也不明白。我查过类似的帖子,但在这里找不到类似的问题
看看代码:
int i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
这里是字节码
Compiled from "Test.java"
public class Test {
public Test();
public static void main(java.lang.String[]);
}
这些类型在这里是如何工作的?它是否取决于数据类型的大小?代码是如何工作的
# 1 楼答案
这只是一系列与类型转换混合的一元+和-操作
从-1开始,将其转换为long,一元加号不做任何事情,将其转换为int,一元减号(值现在为+1),转换为char,一元+,转换为byte