day15.三元運算子,小結

時冷發表於2020-12-10

三元運算子,小結

昨天已經學過了邏輯運算子和位運算子,今天呢,就講剩下偷懶的條件運算子以及擴充套件附值運算子

條件運算子? ,:

擴充套件運算子+= ,-= ,*= ,/=

擴充套件運算子

條件運算子就一個問號一個冒號,我們等下再講,先講這擴充套件運算子

我們直接進IDEA,建立一個新的class,名為Demo07寫個main方法,

我們先設個變數,int個a等於10,複製下來b等於20,然後在下面寫一個a+=b,然後輸出一下a,看看什麼意思

在這裡插入圖片描述

結果是30,然後我們在看看這個a+=b,這意思是不是a=a+b, 那a-b怎麼表達呢,是不是用**-=**來表示

這都是用來偷懶的,這樣一看是不是我們的工作量減少很多,但是,我們在學習的時候還是不要偷懶,等熟悉以後,再偷懶也不遲

這裡還要給大家擴充套件一個字串連線符,

我們之前學過,用輸出指令進行加減運算,

System.out.println(a+b)
System.out.println(""+a+b)

那如果我們在前面加個空的字串,輸出一下會怎麼樣

在這裡插入圖片描述

我們可以看到得出來的結果是30和1020

沒加空字串的是正常運算,而加了空字串 **“ ”**的,它沒有去運算,直接輸出了,a跟b的結果是連起來的

我們這個加號兩側,只要有一邊出現了string型別就是空的字串 “ ”,它就會把另外的操作輸出都轉換為string再進行連線

這裡就會有一道面試題了

首先,輸出 a+b+" ",和輸出 “ ”+a+b,他會問你,這兩個會有什麼區別

在這裡插入圖片描述

可以看到,結果是1020和30,那為什麼呢,要知道,這都是有順序的,一個是先拼接,在計算,一個是先計算,在拼接,

字串後面的才會被拼接,前面的會被計算

三元運算子

講完擴充套件運算子,接下來我們將三元運算子,再先創一個Demo08,寫一個main方法

我們前面學的都是一元,二元運算子,那我們來學學三元運算子,在剛剛的條件運算子中我們看到是有一個問號和冒號

這是什麼意思呢,一句話概括

x ? y : z
如果x==true,則結果為y,否則結果為z

相當於x是個布林值,或者運算子,如果x等於true,那結果就是y,如果x等於false,那結果就是z

這三元運算子也是個偷懶的,那我們先做個測試

先int一個score等於80,再往下照著上面的格式寫,

int score = 80;
score < 60 ? “不及格” : “及格”;

如果score小於60,就輸出不及格,如果score大於60,就輸出及格,

然後在前面加上String的類,加上變數名:type,然後再輸出一下type,看看會怎麼樣

那有人問了,為什麼要加上String,加別的不可以嗎,要注意,後面的及格合不及格是文字,當然要用字串輸出啦,不然你用int試一下,或者用char

在這裡插入圖片描述

結果輸出了及格,可以看到這個格式是沒錯的,那如果把score改成50,那是不是就輸出不及格了呀,邏輯是差不多的

等到我們學習到流程控制的時候,會學到if,這兩個和之前學的布林值擴充套件是一個道理的,只是這個比較偷懶,在學習的時候是不建議去用的,

雖然比較偷懶,不建議去用,但是我們必須掌握,包括上面的擴充套件運算子,因為在工作中是比較常用到的,而且這個可以讓程式碼更加精簡,便於理解

學完這些,我們再回到運算子

在這裡插入圖片描述

我們再小學的時候都學習過,運算的優先順序,先乘除後加減

在java裡,等級最高的是一元運算子,過了就是加減乘除,然後一級一級往下

在使用的時候,大家就會發現,不需要去刻意的記住,表示式裡面,有就優先使用括號來組織,為了大家方便只用,多打一點括號不影響對程式碼的理解,反而會更清楚

這個優先順序就當做作業,有時間就一個一個去試,看一下a+b,a-b會先出來什麼東西的,我們一般都會使用括號,弄得明明白白

相關文章