1. 程式人生 > 其它 >2021-10-22目標股

2021-10-22目標股

算數運算子
+(加)、-(減)、*(乘)、/(除)、%(取餘)

注意事項:
1.當兩個整數進行除法運算時候,結果只取整數部分,小數部分捨棄。
2.當希望結果中保留小數部分,具體方法如下:
a.將其中一個運算元強轉為double型別在做運算
b.將其中一個運算元乘以1.0提升為double型別再運算(推薦)

3. 0不能作為除數,否則產生 java.lang.ArithmeticException(算數異常): / by zero
但是0.0可以做除數但結果是無窮大的,因此以後開發中避免使用0和0.0作為除數

a.當+兩邊的運算元中只要有一個字元型別,則按照字元連線符來處理,結果依然是字元
b.將+兩邊的運算元都不是字串時,則按照算數運算子來處理。

字串連線運算子


“+”可以是實現字串的連線。同時可以實現字串與其他資料型別的相連。

自增減運算子
++(自增)、--(自減)

+ 表示加法運算 ++ 表示自增,也就是讓當前變數自身的數值加1.
- 表示減法運算 -- 表示自減,也就是讓當前變數自身的數值減1.
-
ia + ib ia++;

++(--)可分為前++ 和後++(--)

++ia 當++在前面的時候先進行加1的操作,然後再進行其他運算;

ia++ 當++再後面的時候先其他運算,然後再進行加1的操作

--ia 當--在前面的時候先進行減1的操作,然後再進行其他運算;

ia-- 當--在後面的時候先進行其他運算操作,然後再進行減1;

單獨使用變數進行自增減的操作,建議儘量不要與其他運算子混合使用

賦值運算子


=、+=、-=、*=、/=、%=
賦值運算子將右邊表示式的運算結果賦值給左邊變數的運算子

<1>簡單賦值
= 表示賦值運算子,用於將=右邊的資料賦值給=左邊的變數,覆蓋該變數原來的數值。

<2>複合賦值
+=、-=、*=、/=、%=

a+=1; 等效於 a=a+1;

關係/比較運算子
>、<、==、<=、!=、>=
>
比較運算子是用來判斷兩個表示式或值大小關係的運算子。

> 表示是否大於運算子
< 表示是否小於運算子
== 表示是否等於運算子
<= 表示是否小於等於運算子
!= 表示是否不等於運算子
>= 表示是否大於等於運算子

關係運算符參與的表示式最終結果為boolean型別, true(真) 和false(假)

邏輯運算子
邏輯運算子運算元為boolean表示式

Java提供的邏輯運算子有 &和&&(與) |和||(或) !(非)

&和&&(與) 表示邏輯與運算子,相當於“並且” ,同真為真,一假為假
|和||(或) 表示邏輯或運算子,相當於“或者”,一真為真,同假為假。
!(非) 表示邏輯非運算子,相當於取反,真為假 ,假為真

&& 和 || 具備短路的特性: 如果通過第一個表示式的值即可得出最後的結果,則補計算第二個表示式。

短路的特性:
邏輯與:若第一個條件為假則整個表示式一定為假,此時跳過第二個條件的執行。
邏輯或:若第一個條件為真則整個表示式一定為真,此時跳過第二個條件的執行


條件/三目運算子
<1>語法格式:
條件表示式 ? 表示式1 : 表示式2

<2>執行流程
判斷條件表示式是否成立
= 若成立,則執行表示式1
= 若不成立,則執行表示式2

a = 3 > 2 ? 5 : 6;
3>2為真,所以a=5

移位運算子
左移(<<) 、算數右移(>>) 、邏輯右移(>>>)

移位運算針對二進位制移動
<< - 表示左移運算子,用於講該整數的二進位制向左邊移動,右邊補0 (丟去最高位,0補最低位)

舉例:
5<<5

0000 0101(5的二進位制)
0000 1010(第一次移動)
0001 0100(第二次移動)
0010 1000(第三次移動)
0101 0000(第四次移動)
1010 0000(第五次移動) ---- 結果 160 = 128+32

>> -- 表示右移運算子,用於將整數的二進位制向右移動,左邊補符號位.
>>> -表示無符號右移運算子,忽略符號位,用於將整數二進位制向右邊移動,左邊補0

位運算子
&按位與、 |按位或 、^按位異或、 ~按位非,按照二進位制逐位進行二進位制運算。

&按位與 - 用於將整數的二進位制進行與運算 , 同1 為1 ,一0為0

舉例:
5&8
0000 0101
0000 1000
-------------------
0000 0000 0

|按位或
一1為1,同0為0
運算規則: 0|0 = 0 ; 0|1 = 1; 1|0 = 1 ; 1|1 = 1;

舉例
5|8
0000 0101
0000 1000
---------------
0000 1101 --結果13

^按位異或
相同為0 不同為1
運算規則: 0^0 = 0; 0^1=1; 1^0 = 1; 1^1 = 0;
舉例:
5^8
0000 0101
0000 1000
---------------
0000 1101 ---13

~按位非
按照二進位制取反運算,1為0 ,0為1

舉例:
^8---
0000 1000(二進位制)
1111 0111 (1為0 ,0為1)(現在是負的二進位制,轉換成十進位制輸出)
0000 1000 (按位取反)
0000 1001(加一)
9 (是進位制整數)
-9 (前面新增符號)

^-10----
0000 1010 (-10的絕對值轉換為二進位制)
1111 0101 (按位取反)
1111 0110 (加一)
0000 1001 (反碼)
9 (轉換為十進位制)



反碼:
正數的反碼就是它本身
負數的反碼,就是將原碼的非符號部分,每一位取反


補碼:
正數的補碼也是它本身
負數的補碼,符號位不變,其餘每一位取反之後,最後加一(反碼+1)


運算子優先順序
運算子分類 結合順序 運算子

分隔符 左結合 . [] ( ) ; ,

一元運算子 右結合 ! ++ -- - ~

算術運算子/移位運算子 左結合 * / % + - << >> >>>

關係運算符 左結合 < > <= >= instanceof(Java 特有) = = !=
邏輯運算子 左結合 ! && || ~ & | ^
三目運算子 右結合 布林表示式?表示式1:表示式2
賦值運算子 右結合 = *= /= %= += -= <<= >>= >>>= &= *= |=