第3章 運算符
3.1.1 % 取餘運算符(也成爲模運算符)
取餘運算符既可用於兩個操作數都是整數的情況,也可用於兩個操作數都是浮點數(或一個操作數是浮點數)的情況。
a%b的計算公式爲:a % b = a - (int)(a /b) * b
/和%:
//兩邊爲整數
int a = 9;
int b = 2;
System.out.println(a / b); // 4
System.out.println(a % b); // 1
// 兩邊爲浮點數
int d1 = 9;
double d2 = 3.0;
System.out.println(d1 / d2); // 3.0
System.out.println(d1 % d2); // 0.0
7 / 3 //整除,運算結果爲2
7.0 / 3 //除法,運算結果爲2.33333,即結果與精度較高的類型一致
7 % 3 //取餘,運算結果爲1
7.0 % 3 //取餘,運算結果爲1.0
-7 % 3 //取餘,運算結果爲-1,即運算結果的符號與左操作數相同
7 % -3 //取餘,運算結果爲1,即運算結果的符號與左操作數相同
3.1.2 自增自減運算符(++,--)
如果爲前綴(++i,--i),則爲先加一或減一,然後使用。
如果爲後綴(i++,i--),則爲先使用,然後加一或減一。
3.1.3 “+”運算符
如果兩邊是數值類型,則完成數值相加;
如果兩邊至少有一個是字符串類型的參數,則爲字符串追加符。
案例:
System.out.println(" " + 2 + 3);// 空格23
System.out.println(2 + 3); //5
System.out.println(2 + 3 + " "); //5空格
System.out.println(2 + " " + 3); //2空格3
3.1.4 移位運算符 :>>(右移),<<(左移 ),>>>(無符號右移)
如果是byte,short,int,char型移位時自動擴展爲int型。
一般規律:
<< 往左移 左移n位,右面補0。 byte、short和char類型移位後的結果會變成int類型。
>> 往右移 右移n位,高位補符號位。
>>> 無符號移位 始終補0。
注意: 1)移位運算的前提是不要超出數的表示範圍
2)移位運算只針對整數類型(byteshort char int long)
3.1.5 賦值運算符=,及其擴展賦值運算符如+=,―=,*=,/=等
例如:
byte i=3;
i+=3;
bytei=3;
i=i+3; //錯誤,正確寫法爲:i=(byte)(i+3);
右邊的例子:i本來是byte型的,與字面量3相加則變成int型的了。
可見, += 或 -= 有時隱含着強制類型轉換。
案例分析:
String s = "Hello";
String s1 = "hh";
int i = 10;
s += i;
System.out.println(s); //s=Hello10
s += s1;
System.out.println(s); //s=Hello10hh
總結:如果+=兩邊至少有一個是字符串則爲字符串追加符。