—— 本文參照 Learn Java for Android Development (第三版)
賦值運(yùn)算符
賦值運(yùn)算符顧名思義就是把值賦給變量的纠俭。例如:int x = 4;這里等號兩邊的類型必須是一樣的滥比,否則就會報錯硅急。
Java還支持符合賦值校摩,舉個例子:pennies += 50;這個表達(dá)式其實等價于pennies = pennies+50.其他的復(fù)合運(yùn)算符的原理跟這個是一樣的冗荸。
位運(yùn)算符
位運(yùn)算包括:按位與(&)父阻、按位取反(~)覆致、按位異或(^)侄旬、按位或運(yùn)算(|).這些操作都是用來對二進(jìn)制形式的數(shù)據(jù)操作的,所以如果之前沒有使用過這些運(yùn)算符的話可看看下面的例子:
public class operatorTest
{
public static void main(String[] args)
{
System.out.println(~181);
System.out.println(26 & 183);
System.out.println(26 ^ 183);
System.out.println(26 | 183);
}
}
編譯執(zhí)行這段代碼:
javac operatorTest.java
java operatorTest
打印結(jié)果如下:
-182
18
173
191
只看結(jié)果好像是看不出什么的煌妈,下面詳細(xì)解釋一下這個結(jié)果是怎么來的儡羔。我們先將所有的操作數(shù)轉(zhuǎn)化為32位的二進(jìn)制看看:
181 相當(dāng)于 00000000000000000000000010110101
26 相當(dāng)于 00000000000000000000000000011010
183 相當(dāng)于 00000000000000000000000010110111
181按位取反得到的是11111111111111111111111101001010.因為最高位是符號位,如果最高位是1的話就表示負(fù)數(shù)璧诵。所以~181的結(jié)果是-182汰蜘。
再看26&183
00000000000000000000000000011010
&
00000000000000000000000010110111
00000000000000000000000000010010
得到的結(jié)果就是18
26^183的結(jié)果如下:
00000000000000000000000000011010
^
00000000000000000000000010110111
00000000000000000000000010101101
結(jié)果是173
26|183的結(jié)果如下:
00000000000000000000000000011010
|
00000000000000000000000010110111
00000000000000000000000010111111
答案是191.
Page 58