java心得---運算子
來源:互聯網
上載者:User
今天學習了java的運算子,以下是今天的心得和重點:
1.java中對運算子“+”進行了補充,可用來串連兩個字串,例如:“abc”+123的結果為“abc123”; 兩個整數相除的結果取其整數部分,例如:3/2不是1.5而是1; java中取餘預算(%)即可對整數取餘也可對小數取餘,例如:16.3%5=1.3; 可以對char型資料進行算術運算,但不能對boolean進行,(因為char型可自動轉換為整型和浮點型,而boolean不能與任何類型轉換)例如:'a'%4=1; ++(--)運算子的運算元必須是變數,不能是常量和運算式(從賦值的角度看,++a和a++是一樣的,都是把a的值增一;但是從參與運算式的運算角度看,結果是不同的,++a是先對a增一,再用增一後的值進行運算,a++相反)。
2.用println輸出時,括弧內的內容不加引號時代表運算式,加上代表輸出引號內的內容!例如:System.out.println(3>4)輸出false(關係運算子得到的結果為boolean型,取值為ture或false,例如:< <= !=比較結果為ture;而> >= ==則為false),System.out.println(“3>4”)輸出3>4.一定要注意書寫。
3.邏輯運算子與位元運算符的區別:對boolean型資料進行邏輯上的“與、或、非、異或”等運算,結果仍為boolean型時用的是邏輯運算子;對整型(包括byte、short、int、long)和字元型(char)資料的二進位位進行運算結果為一個整數時用的是位元運算符。
4.邏輯運算子:異或(^)同假異真;&(&&)兩真才為真,剩下均為假;|(||)有一真就為真,全假才為假;
5.邏輯&、|與短路&&、||的區別:(任何情況下兩遍都運算)利用&、|做邏輯運算時,運算子左右兩邊的運算式都會被運算執行,最後兩個運算式的結果再進行與或運算;(有時只進行左邊運算就可得結果)利用&&、||做邏輯運算時,如果只計算運算子的左邊運算式的結果就可確定與或的結果,則右邊的運算式將不會執行。
6.位元運算符:左邊最高位是符號位,0表示正數,1表示負數;負數採用補碼的形式。負數的二進位表示:將其絕對值安位取反,再加一。
7.參與預算的兩個值,&運算如果兩個相應位都為1,則改位結果為1,否則為0,即0&0=0,0&1=0,1&0=0,1&1=1;|運算,只要兩個相應位有一個為1,則改位結果為1,即0|0=0,1|0=1,0|1=1,1|1=1;^運算,只要兩個相應位相同,則為0,否則為1,即0^0=0,1^0=1,0^1=1,1^1=0;例子:00101010^00010111結果為:00111101。
8.“<<”左移(箭頭向左)運算,a<<b將整數a的二進位形式逐位左移b位,右側(低位)空餘出來的b位補0,原來左側的b位被丟棄;">>"右移(箭頭向右)運算,右移b位,左側(高位)空餘出來的b位補原來的符號位,原來最右側的b位被丟棄;">>>"與">>"的不同之處是">>>"左側(高位)空餘出來的b位補0,而">>"補原來的符號位
9.移位規律:移一位,a*2;移兩位,a*2*2;移三位,a*2*2*2。。。。以此類推,即移幾位就乘2的幾次方。
移位元運算時真正的移位元不一定是指定的b位,當a為int型(或byte、short、char型)時,系統先將b對32模數,得到的結果才是真正的移位位元,而當a為long型時,系統先將b對64模數,對於字長為32位的int而言,移位超過32沒有意義,long型資料的情況也類似,因此,10>>32等價於10>>0,實際上右移0位,即沒有反生移位。
10.取位,取幾位用幾個一;取哪位哪位上用一。
11.在賦值運算子兩側的類型不一致時,如果左側變數的資料類型範圍大,則把右側的資料類型自動轉換為左側相同的資料類型,然後賦給左側變數,否則需要強制類型轉換運算子。 比如:short i; i=i+2;(因為2為整型,所以與之先加的i預設轉換為int型,即右邊為int型而i為short型,固錯誤,兩次運算,未轉換) i+=2(因為+=為擴充賦值運算子,固為一次運算,內部自動轉換)。
12.擴充運算子(+=、-=等等)比如:a+=b,a必須是一個變數,b可以是變數、常量、運算式等。
13.條件運算子(。:)是java中惟一一個三目運算子。<運算式1>?<運算式2>:<運算式3>(表達是1必須是boolean型的)。
14.自動轉換的規則:層級由低到高依次是:byte->short->int->long->float->double;char+char->int,boolean不能與任何類型轉換。
15.強制轉換的格式:(目標資料類型)變數或運算式,強制轉換時由於目標資料類型的範圍小於待轉換類型範圍,在轉換過程中會出現截斷,導致 高位 資料丟失或精度下降。(高位截斷,留下低位)
16.運算時byte、short、char自動轉換為整型後才運算,一個整數預設的都是int型的,byte、short、char可以直接賦值為整數常量,只要不超過它的範圍。
17.調用的類和方法只要不在java.lang包下,就要在代碼開始倒包。調用靜態方法,不需要再new對象,可直接調用,否則要new對象才可用,比如:對象名 類名=new 對象名()。