我尝试编译并运行以下代码
public static void main(String... args) {
int x = 1 | 2 | 3 | 4;
//int x = 1 | 1 | 1 ;
//int x = 1 | 2 ;
//int x = 2 | 1 ;
System.out.println(x);
}
我在 dot net 中尝试过,但它不工作它为什么在 java 中工作?如何评估此代码以产生答案?
我尝试编译并运行以下代码
public static void main(String... args) {
int x = 1 | 2 | 3 | 4;
//int x = 1 | 1 | 1 ;
//int x = 1 | 2 ;
//int x = 2 | 1 ;
System.out.println(x);
}
我在 dot net 中尝试过,但它不工作它为什么在 java 中工作?如何评估此代码以产生答案?
1 | 2 = 00000001 | 00000010 = 00000011 = 3
3 | 3 = 00000011 | 00000011 = 00000011 = 3
3 | 4 = 00000011 | 00000100 = 00000111 = 7
这在 Java 中称为按位运算符。它对操作数的位进行操作。按位 | 运算符执行按位包含 OR 运算。
如果您观察低位:
1 - 0001
2 - 0010
3 - 0011
4 - 0100
它们中的每一个都会产生 Biwise OR 0111
。7
您可以参考JLS 15.22.1了解更多信息。
这是按位包含 OR或运算符的示例。结果将是 7。
1 - 0001
2 - 0010
3 - 0011
4 - 0100
---------
7 - 0111
我不知道你是如何在“dot net”中使用它的,但它应该可以工作。这个读数证明了这一点