我正在研究以下oracle java class并遇到了这行代码:
public synchronized int getRGB() {
return ((red << 16) | (green << 8) | blue);
}
我迷失了什么“&lt;&lt;”意思是,我也不知道返回语句是什么意思返回
答案 0 :(得分:2)
这是一个移位操作。阅读更多here。它会将这3个数字打包成一个整数。
答案 1 :(得分:2)
24位颜色通常表示为RRRRRRRRGGGGGGGGBBBBBBBB,每种颜色有8位值。您的代码采用红色值,将其移位16位,将绿色值移位8位,并保持蓝色值不变,然后执行逻辑OR,在这种情况下与添加值相同。想一想:
每种颜色的字节值:
Red = 00011010
Green = 10101010
Blue = 11111111
移位的值变为:
Red << 16 =
00011010 00000000 00000000
Green << 8 =
00000000 10101010 00000000
Blue =
00000000 00000000 11111111
逻辑OR将它们组合成:
00011010 10101010 11111111
这是您的24位RGB值,将返回。
答案 2 :(得分:2)
public synchronized int getRGB() {
return ((red << 16) | (green << 8) | blue);
}
我迷失了什么“&lt;&lt;”意思是,我也不知道返回声明会返回什么?
首先,'&lt;&lt;&lt;&lt;被称为位移运算符。位于here的关于他们的文章很精彩。
关于你的第二个问题,看看方法的签名......它将返回int
。但是,在这种情况下,它将返回并int
包含blue
的值和red
和green
的位移位值
希望这有帮助!
答案 3 :(得分:2)
x << y
表示&#34;将x
的二进制表示转移到左y
个地方&#34;
例如
System.out.println(4 << 2);
将打印16
。
4
是二进制的100
。如果您将100
转移到左侧2个位置,则会得到10000
,其中小数为16
。