自增,自減運(yùn)算符(++和--)
int a =3;
int b = a++;
System.out.println(a);備注:這個(gè)地方輸出的a是4
int c = ++a;
System.out.println(a);備注:這里的a已經(jīng)是經(jīng)過c運(yùn)算后得到的
System.out.println(b);備注:++在后,就是先運(yùn)行程序,然后再把a(bǔ)+1
System.out.println(c);備注:++在前,就是先把剛才運(yùn)算后的a,就是4再加1,再運(yùn)算c
總結(jié):a++的意思是,執(zhí)行完代碼后,再給a自增,++a的意思是,先給a自增,再執(zhí)行這段代碼。--含義類似。
如何用Java進(jìn)行冪運(yùn)算
Java中很多運(yùn)算不能直接進(jìn)行,我們會(huì)使用一些工具類來操作
double pow = Math.pow(2,3);//math類
System.out.println(pow);
邏輯運(yùn)算(&&-與,||-或,!-非)
boolean a =true;
boolean b =false;
System.out.println("a&&b:"+(a&&b));備注:邏輯與運(yùn)算,兩個(gè)變量都為真
System.out.println("a||b:"+(a||b));備注:兩個(gè)變量有一個(gè)真,則為真
System.out.println("!(a&&b):"+!(a&&b));備注:如果是真,則為假
短路運(yùn)算
System.out.println("a&&b:"+(b&&a));
int c =5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);備注:結(jié)果為錯(cuò),后面不執(zhí)行了,短路
System.out.println(c);備注:c++沒有執(zhí)行,所以c還是5
位運(yùn)算(&,|,^,~)
A = 0011 1100
B = 0000 1101
---------------------------------------------------
A&B = 0000 1000? 各個(gè)位數(shù)上比較,都為1結(jié)果為1,否則為0
A|B = 0011 1101? 各個(gè)位上都是0,就是0,否則為1
A^B = 0011 0001? 兩個(gè)位置相同則為0,否則就為1
~B? = 1111 0010? 各個(gè)位置完全相反
位運(yùn)算(左移<<,右移>>)
面試題:2*8怎么算最快
System.out.println(2<<3);
解釋0000 0000 代表0
0000 0001? 代表1
0000 0010? 代表2
0000 0011? 代表3
0000 0100? 代表4
0000 1000? 代表8
0001 0000? 代表16
<< 相當(dāng)于*2
>> 相當(dāng)于/2
位運(yùn)算效率極高,直接跟二進(jìn)制打交道的,很快。
擴(kuò)展賦值運(yùn)算符(+=? , -=? , *=? , /=)
int a =10;
int b =20;
a+=b;備注:a=a+b
a-=b;備注:a=a-b
System.out.println(a);備注:最終結(jié)果是10
擴(kuò)展賦值運(yùn)算符是偷懶方式,不推薦大家用。
字符串連接符(+)
System.out.println(a+b);
System.out.println(""+a+b);備注:結(jié)果是1020,沒有計(jì)算,而是連起來
System.out.println(a+b+"");備注:結(jié)果是30,先計(jì)算結(jié)果,然后再連接
總結(jié):只要+左右出現(xiàn)String類型,就會(huì)把其他所有類型都轉(zhuǎn)換成String類型然后連接
條件運(yùn)算符(三元運(yùn)算符 ? :)
x ? y : z
如果x==true,則結(jié)果為y,否則,結(jié)果為z
int score =80;
String type = score <60 ?"不及格" :"及格";備注:結(jié)果是及格
后面if函數(shù)也可以實(shí)現(xiàn)這個(gè)功能,但在這里必須掌握。