學習計算機編程語言都會遇到運算符這一知識點,運算符這個知識點是教怎么運用編程語言進行最基本的數據處理,下面就講一下在JAVA語言中運算符是怎么回事。
1、算術運算符:
基本上和C/C++語言中的一樣;
加(+):計算兩個數之和或者將較小的數據類型提升為int;
減(-):計算兩個數的差或者轉變數據的符號;
編譯器會自動識別是兩個數之間的計算還是其他。
比如:x = -a; x= a +b;
乘(*):計算兩個數的積;
除(/):計算兩個數之商。注意a/b,b不能為0,要不然編譯不過;整數的除法如果除不盡會直接把小數部分抹掉而不是四舍五入。
取余(%):還叫取模,取的是兩個數的余數。
自動遞增/減(--、++):++a相當于a=a+1;注意這兩個操作符分前綴(++a)和后綴(a++),前綴會先進行運算,再使用這個變量,后綴是先使用變量再進行計算;
比如:int a = 1;
println("a = " + ++a);//2;
println("a = " + a++);//2
上面打印出來都是2,第一個因為是前綴,所以先執行運算后打印a,第二個是先打印a再執行運算;
這個經常出現在面試題中,在實際項目中也經常用到。
2、關系運算符:
關系運算生成的是一個boolean結果;
大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==),不等于(!=)。
在基本數據類型之間使用關系運算符很容易理解,就是比較兩個數的大小關系,但是對于等于和不等于可以用在其他的數據類型(對象)之間,這個時候比較的是對象的內存地址是否一樣,這里先不過多講解,后面的文章在學習完類和對象之后會拿來和equals()方法放在一期講。
3、邏輯運算符:
與(&&),或(||),非(!)生成的結果也是一個boolean值。
a&&b,a和b全為true時結果才是ture;
a||b,a或者b有一為true結果就是true;
這里a和b可能是兩個boolean變量,也可能是兩個結果為boolean的表達式。
注:說一下短路問題,這個在實際編程中也會遇到,短路是在進行邏輯運算時,如果通過前面的判斷已經能夠明確的知道整個表達式的值,就不會再進行后面表達式的邏輯判斷。例如:表達式a || 表達式b || 表達式c 在知道表達式a是true時就已經能夠知道整個表達式的值為true,所以表達式2和3 都不會再進行判斷。
4、位運算符:
用來操作整數基本數據類型的每一個位,也就是把整數按照二進制進行計算。
int a = 50;
int b = 30;
System.out.println(Integer.toBinaryString(a));// 110010
System.out.println(Integer.toBinaryString(b));// 011110
System.out.println(Integer.toBinaryString(a & b));// 010010
System.out.println(Integer.toBinaryString(a | b));// 111110
System.out.println(Integer.toBinaryString(a ^ b));// 101100
System.out.println(Integer.toBinaryString(a << 2));// 11001000
System.out.println(Integer.toBinaryString(a >> 2));// 1100
&按位與操作符,當且僅當兩個操作數都為1時結果才為1。
|按位或操作符,只要兩個操作數的某一位是1結果就為1。
^按位異或操作符,兩個操作數不相同時則結果為1。
?按位補運算符翻轉操作數的每一位,0翻轉為1,1翻轉為0。
<< 按位左移運算符。左操作數按位左移右操作數指定的位數,低位補0。左移幾位等于乘2的幾次冪。
>> 按位右移運算符。左操作數按位右移右操作數指定的位數,高位補0或者1,取決于操作數正負,正則補0,負則補1。右移幾位等于除2的幾次冪。
>>> 按位右移補零操作符(無符號右移)。左操作數的值按右操作數指定的位數右移,移動得到的空位以0填充。
5.三元運算符:
三元操作符也叫條件操作符。表達式如下:
boolean-expression ? value0 : value1;
如果boolean-expression 是true則就計算value0,并且作為整個表達式的值返回,如果為false則計算value1,并作為結果返回。
6.關于優先級:
網上流傳最多的是下面的口訣:
單目乘除為關系,邏輯三目后賦值。
單目:單目運算符+ –(負數) ++ -- 等
乘除:算數單目運算符* / % + -
為:位移單目運算符<< >>
關系:關系單目運算符> < >= <= == !=
邏輯:邏輯單目運算符&& || & | ^
三目:三目單目運算符A > B ? X : Y
后:無意義,僅僅為了湊字數
賦值:賦值=
在實際工作中寫代碼盡量都加上括號,用括號來區分哪個優先,還有就是避免寫太長的運算符表達式。專業的代碼是美觀,易懂的,誰也不會單純死記這些優先級,除非哪個變態面試官出這樣的無聊題目。
以上就是Java語言中關于運算符的講解,重在理解。