最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

張小飛的Java之路——第四章

2023-03-19 17:11 作者:bili_32311085394  | 我要投稿

寫在前面:

視頻是什么東西,有看文檔精彩嗎?

視頻是什么東西,有看文檔速度快嗎?

視頻是什么東西,有看文檔效率高嗎?


下午 2 點。諸小亮看著空蕩蕩的書房:“這小子,肯定又睡過了,不行,我得去找他”


來到張小飛的屋前,還沒開口,就聽到:

諸小亮:。。。。。。。

1. 表達式

十分鐘后,兩人重新來到了書房。


諸小亮:“咱們繼續(xù)上課,首先來認識一下 表達式

表達式:就是 數(shù)據(jù)的表達方式?

比如:int a = 2;那么 a 就是 2 的表達方式,所以 a 就是表達式

張小飛:“a 不應(yīng)該是標識符嗎?怎么又成表達式了”

“一樣的,只是叫法不同而已,這樣定義后,只要提到 a,我們就明白它代表的是 2 ?”


“我明白了,這相當于給數(shù)字 2 起了個綽號”


“可以這樣認為,但并不是很準確,因為下面的也是表達式:”


諸小亮“總之:只要能表示某個數(shù)據(jù)的代碼,都是表達式


張小飛:“明白”

2. 運算符

諸小亮:“接著,我們說說 Java 中的運算符,畢竟計算機嘛,就是幫助人類做計算的”


張小飛:“不就是 加減乘除 嘛,這有什么說的”


“這你就不懂了,加減乘除只是最基本的,Java 中還有其他一些運算符,比如: %、++、-- 等,另外 Java 中的除法,跟我們平常中的除法也有點兒區(qū)別?”


“哦?這我倒是想見識一下,哪里不一樣”


“不要著急,Java中的運算符分為好幾種,我們一個一個說”

1. 算數(shù)運算符

1. + 、-、*、/

諸小亮:“咱們先看 算數(shù)運算符,其實就是: + 、-、*、/

“由于代碼太簡單,結(jié)果我就不輸出了,給你 2 分鐘,你自己看看吧”


“師兄,您接著說吧,這么簡單的東西,都不值得我動手”張小飛信心十足的說到


“好吧,上面的確實太簡單,不過需要注意一點:除法運算,看下面代碼:”

結(jié)果:

“這是什么情況,不應(yīng)該輸出 2.5 嗎?”張小飛問到


“2.5 是數(shù)學(xué)上的結(jié)果,Java 中,整數(shù)之間做除法,結(jié)果中的小數(shù)部分會被舍棄


張小飛:“但是這樣的結(jié)果不正確啊,怎么能夠保留小數(shù)部分呢?”


諸小亮:“如果想保留小數(shù)部分,那么就只能:”

結(jié)果:

“哦,明白了,我自己來試試”

“師兄,我好奇嘗試一下把除數(shù)弄成 0,怎么會這樣子?”

“這表示程序出問題了,不過我們還沒講到這里,之后再說”


“好的,好的”

2. %:取模運算

張小飛:“這個 取模運算 是什么意思?”


諸小亮:“其實就是兩個數(shù)相除,獲取余數(shù),比如:”

結(jié)果:

張小飛:“這個有點兒意思,我來試試”


“師兄,我用正數(shù)測試是沒問題的,但是用負數(shù)的話。。。,結(jié)果:”

諸小亮:“這正是我要給你說的第二點:如果除數(shù)是負數(shù),負號可以忽略不計


張小飛:“那,如果被除數(shù)是負數(shù)呢?我再來試試”

張小飛:“原來如此,如果被除數(shù)是負數(shù),就不能忽略負號了”


諸小亮:“還有一種比較特殊的取模:被除數(shù) 比 除數(shù) 小,比如:”

張小飛:“這個怎么解釋?”


諸小亮:“1 % 5,商是0,余數(shù)是1”


“哦...,明白了”


“還有一點需要記住:取模運算的結(jié)果,必然比除數(shù)小


“這是當然,余數(shù)嘛,肯定比除數(shù)小”

3. ++:自增運算符

諸小亮:“++運算符,表示自己加 1,比如:”

上圖中:a++ 相當于 a = a+1,結(jié)果:

張小飛:“。。。。,我還以為是很高深的東西呢,就這?”


“你想多了,不過下面的就有些難度,比如:前置運算


“哦?什么是前置運算?”張小飛興致勃勃的問到


“把 ++ 放到變量的前面,這就叫:前置運算,比如:”

“。。。。。。,你真無聊”

“哈哈,開個玩笑,下面的才真正能有難度,仔細看好:”

“師兄,感覺還需要您解釋一下”


“沒問題,其實上面代碼的運算邏輯,實際是:”

  • 先執(zhí)行 ++ 操作,所以 a = 2;

  • 然后把 a 的值賦給 b,所以 b = 2;

“明白,不過這也不難啊”

“稍等,讓我變形一下”

“這...,怎么會這樣呢?”張小飛疑惑道


“++ 放到變量后面,情況就不同了,這叫:后置運算,它的運算邏輯是這樣的:”

  • 先臨時記錄 a 的值,比如:int temp = a;

  • 然后執(zhí)行 ++ 操作,所以 a = 2;

  • 最后把 temp 賦給 b,所以 b = 1;

“原來如此,我明白了”張小飛說到

4. --:自減運算

諸小亮:“--運算符,就是自己減 1,跟 ++ 類似,我就不介紹了,給你 5 分鐘,自己玩玩吧”


張小飛:“好的”

2. 賦值運算符

五分鐘后。


諸小亮:“接下來是 賦值運算”


張小飛:“師兄,賦值不就是 = 號嗎,這還要單獨講?”

“賦值運算符也有好幾個,= 只是其中一個,還有:+=, -=, *=, /=, %=,你看看下面代碼:”

“原來還可以這樣使用,我明白了”

“不過,需要明白,a += 3 a = a + 3 還是有區(qū)別的,比如:”

“這是不是寫錯了,這個代碼編譯會報錯,s+3 是一個 int 類型的值,無法賦值給 s ”


“你說的沒錯,但是改一下的話:”

“這時候就可以編譯成功了,而且正常輸出”

張小飛疑惑道:“這是為什么呢?”


“很簡單:+= 是賦值運算符,如果兩邊的類型不一樣時會自動向低轉(zhuǎn)化,所以。。。。?!?/span>


“明白”

3. 比較運算符

諸小亮:“比較運算符也有好幾個:==、!=、>、>=、<、<=”


張小飛:“這個我知道,數(shù)學(xué)上也經(jīng)常使用”

“沒錯,不過在 Java 中,比較運算符的結(jié)果都是 boolean 型,要么是true,要么是false,比如:


結(jié)果:

“這個比較簡單,也沒什么特殊的地方,看看就行”

“好的”

4. 邏輯運算符

諸小亮:“邏輯運算符,這個就復(fù)雜一些了”


張小飛:“師兄,你上面就說有難度,最后也沒發(fā)現(xiàn)難在哪兒了,別再忽悠了”


“咳咳,我說有難度了嗎,我說的是:它稍微復(fù)雜一些”諸小亮反駁道


“好好,是我聽錯了,您接著說”

“邏輯運算符,有 3 個:&&(且)、||(或)、!(非),咱們一個個解釋

1. &&

諸小亮:“第一個:&&(且)”

作用:連接兩個表達式,兩個表達式都為 true,結(jié)果才為 true,否則為 false

示例:

結(jié)果:

張小飛:“還得用 && 連起來,a<b<c 這樣寫不行嗎?”


“不行,Java 中確實不允許a<b<c 這種寫法 ”


“好吧”

“另外,還需要注意:使用 && 時,只要第一個表達式的值是false,那么整體就是false

  • 上面的代碼:c < a && a < b,第一個c < a 是 false,所以整個表達式的值就是false

  • 后面 a < c 不會繼續(xù)判斷,也就是 a<c 這個代碼不會執(zhí)行

“這個,可以證明一下嗎?”


“當然可以,修改一下代碼:”

張小飛:“原來如此, 如果 a / 0 執(zhí)行的話,就會報錯了”

2. ||

諸小亮:“第二個:||(或)”

作用:連接兩個表達式,兩個表達式只要有一個 true,結(jié)果就為 true

示例:

結(jié)果:

“這等于跟 && 剛好相反嘛”張小飛說到


“是的,不過:如果第一個表達式結(jié)果為true,整體結(jié)果就為true,不用再執(zhí)行第二個表達式


“明白,跟 && 很類似”

3.!(非)

諸小亮:“第三個:!(非),這個更簡單”

作用:對表達式的值取反,如果表達式的值是true,取反后,結(jié)果就是:false

示例:

結(jié)果:


5. 位運算符

諸小亮:“師弟,下面我們講位運算,這個是真有難度”


張小飛:“。。。。?!?/span>


“你不信?好,我們來看看,位運算:直接數(shù)據(jù)對二進制進行運算”


“二進制運算?什么意思?”

1. <<

諸小亮:“<<:左移一個數(shù)左移 N 位,相當于乘以 2 的 N 次方

示例:

結(jié)果:

張小飛:“這個二進制又有什么關(guān)系呢?”

“很簡單,我們先看數(shù)字 1 的二進制:”

“左移 1 位,就是把所有二進制向左邊移動一個位置,結(jié)果:”

“這樣,左邊做高位的 0 就會超出 int 的邊界,也就舍棄掉了,不過最右邊也會出現(xiàn)一個空位,這時進行補 0 操作,最后結(jié)果:”

張小飛:“原來是這樣,我明白了”

2. >>

諸小亮:“然后是 >> (右移)”

>>:右移,一個數(shù)右移 N 位,相當于除以 2 的 N 次方

張小飛:“明白,右移跟左移剛好相反”

“是的,不過在右移后,左邊會出現(xiàn)空位,這時:”

  • 如果是正數(shù):左邊補0

  • 如果是負數(shù):左邊補1


“師兄,不對啊,為什么我這個右移后結(jié)果是0呢?”


諸小亮微微一笑:“我們再來回憶一下,1 的二進制”

“右移 1 位的結(jié)果:”

因為是正數(shù),所以左側(cè)補 0 ,最終結(jié)果:

張小飛:“原來如此,懂了懂了”

3. >>>

張小飛:“師兄,>>> 這個也是右移?”


諸小亮:“是的,這個右移。。。”


“是不是右移 N 位,就相當于除以 3 的 N 次方? ”張小飛搶答道

“。。。。,不是的,它的含義是:>>>:無符號右移,不管是正數(shù)、負數(shù),右移后,左邊統(tǒng)統(tǒng)補0


“師弟,這個我就不詳細介紹了,你自己玩吧”

4. &

諸小亮:“接下來是 & (按位與)運算”


張小飛:“這不是 ‘且’ 嗎,怎么又叫 ‘按位與’ 了?”


“。。。,你仔細看清楚,且是 ‘&&’,這里是 ‘&’


“哦哦,不好意思,看錯了,那這個具體是什么意思?”


“也是對二進制做運算,規(guī)則是:相同位置都是1,那么結(jié)果就為1,否則為0

示例:

結(jié)果:

“這個,嗯。。。,還得麻煩您解釋一下”張小飛說到

“怎么樣,不是那么簡單吧,給你個圖,先看看”

“明白了,關(guān)鍵就在于:相同位置都是1,那么結(jié)果就為1,否則為0

5. |

諸小亮:“師弟,這個要看清楚了,是 ‘|(按位或)’,可不是 ‘||’”


張小飛:“。。。,好啦好啦,這次看清了,趕緊說說是什么意思吧”

“對二進制做 運算,規(guī)則:相同位置均為0,那么結(jié)果就為0,否則為1

示例:

結(jié)果:

“師弟,這個你能單獨畫張圖,解釋一下嗎?”


“沒問題,看我的”

“嗯嗯,沒錯沒錯,看來你已經(jīng)掌握精髓了”

“那,必須的”

6. ^

諸小亮:“最后一個:^(異或),規(guī)則:相同位置的值不同,那么結(jié)果就為1,否則為0


示例:

結(jié)果:


“師兄,這個還交給我,你看看”

“完全正確,簡直不要太棒”諸小亮贊揚到

“過獎,過獎”

“下面給你說一個場景,使用 ^ 很方便,面試也有人問”


“哦?什么場景?”張小飛一下來了興致


“比如:交換兩個變量的值,你覺得應(yīng)該怎么做?”


“這太簡單了,代碼應(yīng)該是:”

結(jié)果:


“嗯,沒錯,你這樣確實能實現(xiàn),但是使用 ^ 會更加簡單,比如:”



結(jié)果:


“這就交換成功了?不是吧”


“沒錯,這就是 ^ 的強大之處,你根據(jù)之前的知識,好好研究一下吧,給你個提示:”

一個數(shù) 異或 同一個數(shù) 兩次,那么結(jié)果是它本身

“好的,好的,我這就看看”


6. 三元運算符

諸小亮:“來,還剩下最有一個運算符:三元運算符”


張小飛:“這又是什么東西?”

“非常簡單,格式:(條件表達式) ? 結(jié)果1:結(jié)果2;


“嗯....,不懂”張小飛搖搖頭


“沒關(guān)系,看一段代碼你就明白了”

結(jié)果:


“師兄,我是這樣理解的:如果條件表達式的結(jié)果為 ture,那么就取 結(jié)果1,否則取 結(jié)果2


“沒錯,是這樣的,那么關(guān)于運算符就這么多了,需要練習(xí)一會兒嗎?”


“當然了,這個東西還是挺多了”


張小飛的Java之路——第四章的評論 (共 條)

分享到微博請遵守國家法律
荥经县| 孙吴县| 霍山县| 金乡县| 涟水县| 偃师市| 南华县| 广平县| 札达县| 桓仁| 合作市| 浮山县| 永修县| 舞阳县| 东方市| 大英县| 南充市| 梅州市| 陆河县| 武陟县| 新余市| 宁都县| 阿鲁科尔沁旗| 阿合奇县| 梅州市| 霍州市| 丹凤县| 纳雍县| 商丘市| 闻喜县| 改则县| 定州市| 绵阳市| 漳浦县| 安塞县| 太康县| 安图县| 通海县| 桐城市| 西畴县| 肇东市|