我最近在一个代码示例中看到了以下内容:
f.setExtendedState( f.getExtendedState()|JFrame.MAXIMIZED_BOTH );
其中 f 是一个 JFrame。这个管道运算符是如何调用的,它是做什么的,我在哪里可以找到关于它的文档?
谢谢赫克托
该“管道”实际上是按位包含的或。f.getExtendedState() 和 JFrame.MAXIMIZED_BOTH 可能是位域中的数字索引。使用“或”运算符将两者的属性组合为一个值。
|
运算符是Java中的按位或运算符。
如果在任一操作数(或两者)中设置了相应位,则按位或的结果是其中设置了位的值。
此处,此操作使用JFrame.MAXIMIZED_BOTH
(二进制,0000 0110
)的值来确保倒数第二位和倒数第三位打开,一位用于水平,一位用于垂直。这使所有其他位f.getExtendedState()
保持不变。
| 代表按位包含的 OR 运算符。在此处查看详细信息:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html
管道 (|) 运算符只是按位或运算符。它将遍历两个数字的相应位,并且生成的数字将具有一个打开位,其中两个输入位中的任何一个都打开。在您给我们的情况下,运算符用于将标志添加到位域。
例如,如果您有一个 number flags
,(比如说)是 4,它看起来像
00000100b
在二进制。如果你|
用数字00010000b
(16),结果是
00010100b,
其中包含原始标志(位位置 3)和新标志(位位置 5)。