[英]What does ^= mean in Java?
我在HashMap.java中看到了以下代碼。
h ^= k.hashCode();
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
一些隨機輸入產生類似於加法的輸出,但是下面的代碼導致0
int p = 10;
p ^= 10;
System.out.println("_______ " + p);
^=
運算符對左側的變量和操作數進行XOR,然后對該結果的變量進行賦值。
與自身進行異或,您得到零。 這是將寄存器設置為零的有效方法,因為它不會移動任何內存。
^
被稱為XOR(異或或或) ,是邏輯運算符,它遵循:
1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
因為p^=10
等效於:
p = p ^ 10; or, p = p xor 10
在p = 10
您的操作很簡單:, (10 ^ 10)
,其結果為0
^=
是按位異或和賦值運算符。 x ^= 2
與x = x ^ 2
。
^是邏輯XOR(異或)的符號。
當放在等號之前時,這意味着“將給定值與自己異或,然后將結果寫回給自己”。 a ^ =值與說a = a ^值相同。
如果與其他運算符(例如add)一起使用,它可能會變得更加清晰。
例如:
int counter = 14;
// Add 20 to counter (could also be written counter = counter + 20):
counter += 20;
// Counter is now 34
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.