這一篇要來聊「符號」
符號在Java中有很多意義
比方之前的宣告式
int number = 123;
一個「=」就是指派
把123指派給number這個int變數
當然,還有很多符號
不外乎「加減乘除」「等於」「大於」「小於」......等等等
下面我就表排一下
§算術運算子
運算子 |
功能 |
假設a = 5, b = 2 |
+ |
加 |
a + b = 7 |
- |
減 |
a - b = 3 |
* |
乘 |
a * b = 10 |
/ |
除 |
a / b = 2 |
% |
取餘數 |
a % b = 3 |
補充:這邊的「+」還有另外一個特殊用途就是「文字串接」
簡單來說就像是文字接龍一樣
可以把「文字 + 文字」
雖然還沒有解說到文字,這邊可以先記一下,後續會補充這部分
上次教學裡面我的計算式:
number = number + 1;
意思是說,右邊的number的數字先加一,之後指派回去給自己(number)
這個寫法也可以寫成
number += 1;
對於有規律的遞增(加減乘除 取於數均可)
number -= 1;number *= 1;number /= 1;number %= 1;
這也就是遞增
當然你要 += 2 也可以,他就會變成每次都加2(依此類推)
唯獨「1」還有另外一種表示方式
number++;
這樣一來,結束這一行前他就會自己先+1並存回自己的number變數內
還有另外一種表示
++number;
意思是相同,但是執行結果往往會大不同
執行到「++」的時候,程式就會直接+1並存入變數內
但是「++」在前面,程式通常都會在該行結束時才++
就像吃藥一樣
有些藥是飯前吃,有些則是飯後吃
都是要吃藥,但是用藥順序往往會影響藥效
這裡的「++」亦是如此
一般用比較多的只有「++」,反而其他的較少在使用「-- 」「%%」←消音,別反白
為了解釋得更清楚,特地去回顧我的開山祖師爺的解說
我就用他的例子來解說
num1 = 2
num2 = num1++
和
num1 = 2
num2 = ++num1
差別在於上面的num1會先指派給num2才加1
所以num2會等於2而num1會加一變成3
如下圖
相反的下面的++num1則是先加一才指派
所以num2會等於3而num1也會等於3
如下圖
所以單獨只有number++或是++number兩者是沒有帶大的差別
§比較運算子
運算子 |
功能 |
== |
等於 |
!= |
不等於 |
> |
大於 |
>= |
大於等於 |
< |
小於 |
<= |
小於等於 |
先從簡單的解說起吧
假設A = 5 B = 2 C = 5
數學上面寫的「 9 X 9 = 81」
在Java裡面的表示方式是「 9 * 9 == 81」←兩個「等於符號」唷
前面也說了,一個「=」是指派的意思
只是在程式裡面我們不會這樣打而已啦
因為「==」是比較用的
所以 A == C
(一般「==」會用在判斷式裡面,後面會教學如何應用)
不等於:
數學裡面的「≠」在程式裡面就是「!=」
順便提「!」(雖然這個歸類在邏輯運算)
反向的用法就像「!是」,這樣子出來的結果就是「否」
「!Yes」出來就是「No」
雖然一個「=」是指派沒有錯
但是在這邊的反向不是「不指派」的意思唷,千萬記得
大於、大於等於、小於、小於等於
數學表示法「A ≧ B」程式表示法「A >= B」
這樣已經解說完了.....
§邏輯運算子
運算子 |
功能說明 |
! |
Not |
& |
AND(且) |
| |
OR(或) |
^ |
XOR(互斥或) |
|| |
Short-Circuit OR |
&& |
Short-Circuit AND |
邏輯運算中「 ! 」「 || 」「&&」這三個是最常用
尤其是「 ! 」反向是最常用的
簡單來說就像唱反調一樣
你說正,我就反,一定和你作對
凡事碰到驚嘆號就是唱反調的意思
當然結合之前的布林值
「!true」的結果就是「false」
在提邏輯概念前,先問問自己對於「計算機概論」了解多少?
雖說沒有非要去了解不可,只要知道用法就好
解釋太多反而會混亂
像是「^」互斥或(英文: XOR)
實際業界用到的機會真的少之又少
這玩意兒就是可以知道但是不用太深入去瞭解的東西
其實是我想不到解釋的方式= =
不過我的祖師爺的解說就太簡潔明瞭,所以就引用吧
假設現在你要買車
而車商說買車會送你最新的GPS衛星導航或是按摩椅
只能選擇一種,且一定要選一個
GPS |
按摩椅 |
是否成交 |
O |
O |
X |
O |
X |
O |
X |
O |
O
|
X |
X |
X
|
因為車商只允許你選一個,而且是一定要選
所以你只能擇一
而程式的表示法大概就像這樣
狀況一:要GPS和按摩椅 車商説:不行 只能選一個
狀況二:我要GPS 不要按摩椅 車商說:成交
狀況三:我不要GPS 我要按摩椅 車商說:成交
狀況四:我不要GPS 我也不要按摩椅 車商説:不行 一定要選一個
&& (AND)
假設你現在有10萬元,還有7天假可以出國
兩個條件都要滿足,你才能出國吧?
所以就會有以下狀況
10萬元 |
7天假 |
能否出國玩 |
O |
O |
O |
O |
X |
X |
X |
O |
X |
X |
X |
X |
所以AND運算就是
條件有一個為「false」出來的結果就一定會是false
|| (OR)
知道這個怎麼打嗎?
鍵盤的「Enter」上面
(IMac電腦的鍵盤,配置基本上是一樣的啦)
單按會變成「 \ 」
配合「Shift」鍵就會變成「 | 」啦
假設今天有兩款最新的遊戲
戰地風雲 和 決勝時刻同一天發售
你當然會不計代價的兩個都要買
所以下圖就會是
戰地風雲 |
決勝時刻 |
要不要出門去買 |
O |
O |
O |
O |
X |
O |
X |
O |
O |
X |
X |
X
|
因為你兩個都想玩,除非都不買不然是一定會出門買
都不買就不需要出門啦
所以OR運算就是有一個條件為「true」出來就一定會是true
補充說明
在程式中,你會有看到「&」或是「&&」
「 | 」或是「 || 」的狀況
這在程式中的差別在於「速算」
就像我問你兩個問題,並請用「OR」連接
請問你是吃飯了嗎? && 請問你智商有50嗎?
當你看到第一個吃飯的問題,你可能會思考我吃飯了沒
但是後面一個智商有沒有50,我想你應該都會毫不猶豫地回答「true」
就像這樣,需要電腦運算一下的狀況
寫程式的時候時常需要經過一些條件才能拿來比較
就像這邊一樣
所以
如果你只有用一個「 & 」
前面跑出來是「true」
他還會去比對你後面一個問題的答案是還是否
最後才會吐出你要的「true」
但是AND運算是「只要有一個為true,出來就一定是true」
所以速算就可以節省掉很多時間
只要條件有一個是true,後面那個就不用比較,直接吐true給你
當然OR運算也是一樣,只是兩個問題有一個是false就會吐false一樣的道理
=============================總結=============================
這一篇拖了有點久,多半是因為懶......
另外一方面是想要解釋邏輯概念而傷腦筋
希望對你有幫助
下一篇見