以下代码编译并将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[]);
}
这些类型如何在这里工作?它是否依赖于数据类型的大小?代码如何工作?
答案 0 :(得分:18)
这只是一系列带有类型转换的一元+和 - 操作。
你从-1开始,将它转换为long,unary plus什么也不做,将它转换为int,一元减号(值现在为+1),强制转换为char,unary +,强制转换为byte。
答案 1 :(得分:6)
您可以阅读
int i = + - + - 1;
System.out.println(i);
或者如果您愿意
int i = - - 1;
System.out.println(i);
或者如果您愿意
int i = -1 * - 1;
System.out.println(i);
其他演员没有效果。