- 當(dāng)參與/運算的兩個操作數(shù)都是整數(shù)時,表示為整數(shù)除法,否則表示為浮點數(shù)除法。
- 整數(shù)取余操作稱之為取模
- 浮點數(shù)被0除灰得到無窮大或者NaN
數(shù)學(xué)函數(shù)與常量
- 可以在源文件前加
import static java.Math.*;
平方根Math.sqrt(x)
冪運算 Math.pow(x,a)
x的a次冪,其返回類型為double類型
數(shù)值類型之間的轉(zhuǎn)換
<center class="half">
- 其中一個是double,則轉(zhuǎn)換為double
- 否則其中一個是float,則轉(zhuǎn)換為float
- 否則其中一個是long,則轉(zhuǎn)換為long
- 否則兩個轉(zhuǎn)為int
強制類型轉(zhuǎn)換(cast)
(想轉(zhuǎn)換的類型)變量名
double x = 9.997;
int nx = (int) x;
截斷小數(shù)部分將浮點值轉(zhuǎn)換為整型
如果舍入運算,可以使用Math.round(x)
方法
double x =999.7;
int nx = (int)Math.round(x);
結(jié)果為10
Math.round 返回的類型為long,所以使用(int)強轉(zhuǎn)
結(jié)合賦值和運算符
x+=4;
等價于x=x+4
- 如果x為int進(jìn)行x+=3.5;那么會將結(jié)果強制轉(zhuǎn)換為int即(int)(x+3.5)運算符得到一個值,其類型與等號左側(cè)類型不同,就會強制類型轉(zhuǎn)換
自增自減運算符
- n++將變量的值加一
- n--將變量的值減一
如果是++n則是先執(zhí)行加一,而后者會使用原來的變量值
int m = 7;
int n = 7;
int a = 2 * ++m;// now a is 16,m is 8;
int b = 2 * n++;// now b is 14, n is 8;
關(guān)系和boolean運算符
**要檢測相等性,可以使用==
。可以使用!=
檢測不等
- <(小于)、>(大于)、<=(小于等于)、>=(大于等于)
- &&(與)||(或)
- 三元操作符?:
condition?expression1:expression2
如果條件為true 則執(zhí)行第一個表達(dá)式,如果為false則執(zhí)行第二個表達(dá)式;
x<y?x:y//會返回xy中較小的一個
位運算符
直接對組成整型數(shù)值的各個位完成操作,通過掩碼技術(shù)的得到整數(shù)中的各個位,位運算符用來對二進(jìn)制位進(jìn)行操作
&("and")|("or")^("xor")~("not")
- 按位與(&)、按位或(|)、按位異或(^)、按位取反(~)、按位左移(<<)、按位右移(>>)
-
按位與(&)
對兩個數(shù)進(jìn)行操作,然后返回一個新的數(shù),這個數(shù)的每個位都需要兩個輸入數(shù)的同一位都為1時才為1,如下圖:
(A & B) 結(jié)果為 12, 二進(jìn)制為 0000 1100
-
按位或(|)
比較兩個數(shù),然后返回一個新的數(shù),這個數(shù)的每一位設(shè)置1的條件是兩個輸入數(shù)的同一位都不為0(即任意一個為1,或都為1),如下圖:
(A | B) 結(jié)果為 61, 二進(jìn)制為 0011 1101
-
按位異或(^)
比較兩個數(shù),然后返回一個數(shù),這個數(shù)的每個位設(shè)為1的條件是兩個輸入數(shù)的同一位不同,如果相同就設(shè)為0,如下圖:
(A ^ B) 結(jié)果為 49, 二進(jìn)制為 0011 0001
-
按位取反(~)
對一個操作數(shù)的每一位都取反,如下圖:
(~A ) 結(jié)果為 -61, 二進(jìn)制為 1100 0011
7e7f7909c93d70cf71c2d394f3dcd100baa12b2b.jpg
-
按位左移(<<)
將操作數(shù)的所有位向左移動指定的位數(shù)。
下圖展示了11111111 << 1(11111111 左移一位)的結(jié)果。藍(lán)色數(shù)字表示被移動位,灰色表示被丟棄位,空位用橙色的0填充。
(A << 2)結(jié)果為 240, 二進(jìn)制為 1111 0000
-
6
按位右移(<<)
將操作數(shù)的所有位向又移動指定的位數(shù)。
下圖展示了11111111 >> 1(11111111 右移一位)的結(jié)果。藍(lán)色數(shù)字表示被移動位,灰色表示被丟棄位,空位用橙色的0填充。
A >> 2 結(jié)果為 15, 二進(jìn)制為 0000 1111
c2bce2039245d688833ac93dafc27d1ed21b242b.jpg
括號與運算符級別
-
&&
比||
優(yōu)先級高,所以a &&b || c
等價于(a &&b) || c
-
+=
是又結(jié)合運算符,所以a+=b+c
等價于a+=(b+=c)
63d9f2d3572c11df57c9a205612762d0f703c2f8.jpg
枚舉類型
枚舉類型包括有限個命名的值
enum Size={SMALL,MEDIUM,LARGE,EXTRA_LARGE);
可以聲明變量:
Size s = Size.MEDIUM;