我是Java的新学习者。我有一个简单的使用运算符的程序,如:
public class Test
{
public static void leftshift(int i, int j)
{
i <<= j;
}
public static void main(String args[])
{
int i = 4, j = 2;
leftshift(i, j);
System.out.printIn(i);
}
}
我运行了这段代码,输出为4。
我知道“&lt;&lt; =”是一个左移AND赋值运算符。但它是如何运作的?
答案 0 :(得分:9)
此运算符
X <<= 4;
相当于
X = X << 4;
它遵循与其他复合赋值运算符相同的规则。
答案 1 :(得分:3)
相当于
i = i << j;
将代表i
值的位移到j
左侧,并将此新值存储在i
就像i += j
相当于:
i = i + j;
答案 2 :(得分:3)
在这种情况下,它会向左移动4个(或0000 0100
)个2个位置,从而产生16个(或0001 0000
)
被分配到i
。
但是,这在leftshift
方法中已在本地发生,而i
中的变量main
的值为4.
答案 3 :(得分:0)
几乎所有Java中的二进制算术/位运算符都可以通过在运算符后添加=
来“增强”。
表达式someVariable <operator>= someValue;
表示与someVariable = someVariable <operator> someValue;
相同。
所以i <<= j;
表示i = i << j;
,意思是“取i中的值,左移j位,然后存回i”。