在java中用管道符号声明int,int i=1 | 2 | 3 | 4 | 5;

在java中用管道符号声明int,int i=1 | 2 | 3 | 4 | 5;,java,Java,今天,我在Java中遇到了一种非常不同的声明int的编码风格,出于好奇,我在IntelliJ中尝试了它,它正在工作,但是Google没有解释它是如何工作的 int i = 1 | 2 | 3 | 4 | 5; System.out.println("i = " + i); 输出为7。有什么解释吗?这是有点道理的 当你计算所有这些整数的二进制表示的位时,你得到7: 1 == 0..00001 2 == 0..00010 3 == 0..00011 4 == 0..00100 5 == 0..

今天,我在Java中遇到了一种非常不同的声明int的编码风格,出于好奇,我在IntelliJ中尝试了它,它正在工作,但是Google没有解释它是如何工作的

 int i = 1 | 2 | 3 | 4 | 5;
 System.out.println("i = " + i);
输出为7。有什么解释吗?

这是有点道理的

当你计算所有这些整数的二进制表示的位时,你得到7:

1 == 0..00001
2 == 0..00010
3 == 0..00011
4 == 0..00100
5 == 0..00101
-------------
7 == 0..00111

任何初学者的书或教程都应该有关于按位or运算符的信息。谢谢@Eran,我知道按位or运算符,并且在分配对象时也使用过它。但从来没有想过它也可以用在原语的声明中。