標籤:java基礎 操作符
JAVA操作符
幾乎所有的操作符都只能操作“基本類型”“=”、“= =”和“!=”,它們能操作所有對象String類支援“+”和“+=”
整型:int,short,byte,long 浮點型:float,double 字元:char 布爾:boolean
| 類型 |
位元組 |
| boolean |
1/8 |
| byte |
1 |
| char |
2 |
| short |
2 |
| float |
4 |
| int |
4 |
| long |
8 |
| double |
8 |
優先順序
先乘除後加減
字串串連:String後跟一個“+”,+後非String類型就會自動轉換為String類型
賦值
基本類型賦值:將一個地方的內容複寫到了另一個地方(基本類型儲存的是實際的值)對象賦值(別名現象):將引用從一個地方複製到了另一個地方(一定要小心)
方法別名:void f(Letter t) {t.c = ‘a‘;} //t對象中內容會被改變
算術操作符
雙目運算子包括:(加)+,(減)-,(乘)*,(除)/,(求餘)% +=、-=、*=、/=、%=單目運算包括:+(正),-(負),++(自增),--(自減)
- 當使用+=、-=、*=、/=、%=、運算子對基本類型進行運算時,遵循如下規則
運算子右邊的數值將首先被強制轉換成與運算子左邊數值相同的類型,然後再執行運算,且運算結果與運算子左邊數值類型相同。short s1 = 1; s1 = s1 + 1; //錯誤,高位轉低位需要強制轉換/低位轉高位自動轉,將int賦值給short需要強制轉換short s1 = 1; s1 += 1; //正確,s1+=1等效於s1=(short)(s1+1)
一元減號-(負)用於轉變資料的符號一元加號+(正)用於將較小的運算元提升為int
++在前就是"先加後賦"(++i)++在後就是"先賦後加"(i++)
1)這些運算子的運算對象可以是byte、short、int、long、float、double、char類型,其中char類型在運算時被自動轉為int型。2)在Java中,整數被0除或對0取餘屬於非法運算,將拋出AtrthemticExcerption。3)求餘運算(%)的兩個運算對象不但可以是整數,也可以是浮點類型;不但可以是正整數,也可以是負整數,其計算結果的符號與求餘運算子左側的運算對象符號一致。4)如果參與除法運算的兩個運算對象都屬於整型,則運算為整除運算,若希望得到小數部分的商值則需要對其中一個運算對象的類型作強制轉換。A/(float)B5)運算子“+”的運算對象可以使String,它的操作含義是將兩個字串串連。
關係操作符
大於(>)、大於等於(>=)、小於(<)、小於等於(<=)、等於(==)和不等於(!=)等於和不等於適用於所有基本類型,其他比較符不適用於boolean類型
==與!=也適用於所有對象,比較的是對象的引用
比較對象的實際內容是否相等,使用equals(),此方法不適用於基本類型,基本類型直接使用==和!=即可注意:equals()預設行為是比較引用,大多數類庫都實現了equals()方法用來比較對象的內容;自己定義的類中要達到這種效果,需要重寫該方法。
邏輯操作符
與(&&),或(||),非(!)
“與”,“或”,“非”只應用於布爾值
如果在應該使用String值的地方使用布爾值,布爾值會自動轉換成適當的文本形式
在邏輯運算式中,如果能通過邏輯運算子左邊運算式的值就能推算出整個運算式的值,那麼將不再繼續執行邏輯運算子右邊的運算式。(&&,||)
直接常量
大寫(小寫)的L,代表long大寫(小寫)的F,代表float大寫(小寫)的D,代表double註:如果編譯器能正確識別類型,就不必在數值後附加字元
十六進位:以首碼0x(0X),後面跟隨0-9或小寫(大寫)a-f來表示八進位:以首碼0,後面跟隨0-7來表示
Integer.toBinaryStringLong.toBinaryString
指數計數法
在java中e代表10的冪次,eg: 10E2 //10的2次方 10e-5 //10的-5次方編譯器通常會將指數作為雙精確度數(double)處理
按位操作符
按位操作符會對兩個參數中對應的位執行布爾代數運算,並最終產生一個結果
與:1&1==1 1&0==0 0&0==0 //同為1時,輸出1;否則輸出0或:1|1==1 1|0==1 0|0==0 //同為0時,輸出0;否則輸出1非:~0==1 ~1==0 //取反操作,屬於一元操作符,不可與“=”聯合使用異或:1^0==1 1^1==0 0^0==0 //不同為1,同為0
按位操作符可與等號(=)聯合使用,以便合并運算和賦值:&=,|=和^=
可將布爾類型作為一種單位元值對待,可對它執行按位“與”,“或”,“異或”運算,不能執行按位“非”。eg: true & false
public int[] swapNum(int num1, int num2) { num1 = num1 ^ num2; num2 = num2 ^ num1; num1 = num1 ^ num2; int[] nums = { num1, num2 }; return nums; }
移位操作符
將操作符左邊的運算元向左移動,低位補0
將操作符左邊的運算元向右移動,如符號為正,高位插入0;若符號為負,高位插入1
將操作符左邊的運算元向右移動,無論正負,都在高位插入0
移位操作符操作的運算對象也是二進位的“位”
移位操作符只用來處理整數類型
對char、byte或short進行移位處理,在移位之前,會被轉換為int類型,得到的結果也是int類型
移位可與等號組合使用(<<= 或 >>= 或 >>>=),在對char或short進行>>>=時,可能得到不正確的結果
三元操作符
result = boolean-exp ? value0 : value1;如果boolean-exp計算結果為true,那麼result為vaulue0,否則result為value1
類型轉換操作符
java允許把任何基礎資料型別 (Elementary Data Type)轉換成別的基礎資料型別 (Elementary Data Type),但布爾類型除外
將能容納更多資訊的資料類型轉換成無法容納那麼多資訊的類型,需要顯示的強制轉換,因為可能會面臨資訊丟失危險
int i = 1;short s = (short) i;
在進行窄化轉換時,當浮點數轉換為整型時,會對浮點數進行截尾操作,並不會四捨五入(Math.round()可以實現)
不必顯示的進行任何類型的轉換,因為新類型肯定能容納原來類型的資訊,不會造成任何資訊的丟失
short s = 1;int i = s;
如果對基本類型執行算數運算或按位元運算,只要類型比int小(即char,byte,short),那麼在運算前,這些值會自動轉換成int
通常,運算式中出現最大的資料類型決定了運算式最終結果的資料類型。eg:float與double相乘,結果就是double
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
JAVA基礎之操作符