150天打卡day04_運(yùn)算符
本節(jié)內(nèi)容
數(shù)學(xué)運(yùn)算符
邏輯運(yùn)算符
關(guān)系運(yùn)算符
賦值運(yùn)算符
字符串拼接運(yùn)算符
三目運(yùn)算符
運(yùn)算符概念
小可愛們復(fù)習(xí)完昨天講過的內(nèi)容后,咱們今天要學(xué)一個新的知識點叫運(yùn)算符,Java領(lǐng)域中包含的運(yùn)算符有數(shù)學(xué)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符等。
那么什么是運(yùn)算符呢?運(yùn)算符其實是計算機(jī)中的一種符號,可以用來告訴計算機(jī)執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號。說的羅里吧嗦的到底什么意思呢?就是計算機(jī)本質(zhì)是只能處理數(shù)字的,數(shù)字中運(yùn)算的各種符號例如加減乘除括號等等我們就叫做運(yùn)算符。
運(yùn)算符的由來
我們知道數(shù)字是印度人發(fā)明的,而通過阿拉伯人傳播的,運(yùn)算符是古希臘人和印度人一起發(fā)明的。他們表示+、-都是把兩個數(shù)字寫在一起表示加法,把兩個數(shù)字寫得分開一些來表示減法。
中世紀(jì)后期,歐洲商業(yè)逐漸發(fā)達(dá)。一些商人常在裝貨的箱子上畫一個“+”,表示重量超過一些;畫一個“-”,表示重量略微不足。文藝復(fù)興時期,有一個老頭,這個老頭你們都認(rèn)識,猜猜是誰?意大利的藝術(shù)大師達(dá)?芬奇在他的一些作品中也采用過“+”和“-”的記號。經(jīng)過數(shù)學(xué)家韋達(dá)的大力宣傳和提倡,這兩個符號才開始普及,到1603年終于獲得大家的公認(rèn)。
下面是運(yùn)算符的一個圖表,給大家簡單介紹一下,大家不用背哈,用到了自然也就會了。

運(yùn)算符學(xué)習(xí)要點
學(xué)運(yùn)算符之前呢咱們要掌握以下:
按照參與運(yùn)算元素的個數(shù)分為:單元、雙元、三元運(yùn)算
單元運(yùn)算:a++
雙元運(yùn)算:a+b
三元運(yùn)算符:running ? a:b
優(yōu)先級:優(yōu)先級高的運(yùn)算符先進(jìn)行計算
括號級別最高,其次是單元運(yùn)算,雙元運(yùn)算(先乘除后加減)、三元運(yùn)算和賦值運(yùn)算最低
結(jié)合性:相同優(yōu)先級的按照結(jié)合順序進(jìn)行計算,雙目運(yùn)算從左到右
順序調(diào)整:可以利用()調(diào)整運(yùn)算的順序,建議按照人能理解的順序添加括號
一、數(shù)學(xué)運(yùn)算符
剛剛大家已經(jīng)了解了什么是運(yùn)算符,以及運(yùn)算符的一些要點
接下來由我們來學(xué)習(xí)今天的第一種運(yùn)算符,也就是數(shù)學(xué)運(yùn)算符.
Java算數(shù)運(yùn)算符包括:加(+)、減(-)、乘(*)、除(/)、取模運(yùn)算(%)、自增(++)、自減(--)。
1、四則運(yùn)算
加(+)、減(-)、乘(*)、除(/)也稱為四則運(yùn)算是最常?的數(shù)學(xué)運(yùn)算,運(yùn)算規(guī)則與數(shù)學(xué)中的數(shù)學(xué)運(yùn)算基本一樣,但是也有一些細(xì) 微區(qū)別。一樣的規(guī)則這里就不再復(fù)述,這里主要討論一些不同之處:
相同數(shù)據(jù)類型參與數(shù)學(xué)運(yùn)算,得到相同類型的結(jié)果,整數(shù)除法得到整數(shù)結(jié)果
參與數(shù)學(xué)運(yùn)算的數(shù)據(jù)類型不一致的時候,就近自動數(shù)據(jù)類型轉(zhuǎn)換,轉(zhuǎn)換為相同類型再進(jìn)行計算
byte、short、char類型按照int類型計算
計算結(jié)果超過數(shù)據(jù)類型范圍會溢出
Java中,對于不需要任何準(zhǔn)確計算精度的數(shù)字可以直接使用float或double運(yùn)算,但是如果需要精確計算的結(jié)果,例如商業(yè)應(yīng)用,則必須使用BigDecimal類,而且使用BigDecimal類也可以進(jìn)行大數(shù)的操作。減法應(yīng)用和數(shù)學(xué)一樣。
實現(xiàn)兩個數(shù)值相除的結(jié)果,例如:
2、取余運(yùn)算
取模運(yùn)算(%)意思是取余數(shù),可以用在?整數(shù)、char類型和浮點數(shù)中使用。取余數(shù)計算其意義就是計算獲得除法計算的余數(shù)。在日常生活中其余數(shù)計算不常用,但是 在計算機(jī)編程中,余數(shù)計算經(jīng)常被用到。下面就討論一下余數(shù)計算的特點,正是因為這些特 點,余數(shù)計算才經(jīng)常被使用。
數(shù)學(xué)除法:

余數(shù)計算:

除數(shù)是正數(shù)的時候余數(shù)的運(yùn)算規(guī)律:
被除數(shù)是正數(shù)時候余數(shù)是介于0到除數(shù)之間的數(shù),比如:除數(shù)3則余數(shù)是0,1,2之一,范圍是【0,3)
如果被除數(shù)是0,1,2,3.....則余數(shù)是周期函數(shù),如:除數(shù)3則余數(shù)就是0,1,2,0,1,2.......
如果被除數(shù)是負(fù)數(shù),除數(shù)是3則其余數(shù)范圍是:(-3,0】
負(fù)數(shù)作為被除數(shù)或者除數(shù)的情況在工作中很少用,但是在考試中有出現(xiàn)。
開發(fā)中余數(shù)的用途:
控制計算結(jié)果的范圍,比如控制計算結(jié)果是3以內(nèi)的數(shù),就對3取余數(shù)就行了
控制周期性的運(yùn)算:比如”發(fā)牌“,周期循環(huán)動畫
3、自增自減運(yùn)算
Java的自增運(yùn)算符(++)和自減運(yùn)算符(--)繼承自C++,自增、自減運(yùn)算就是將當(dāng)前變量的值增加1或者減少1。
傳統(tǒng)數(shù)學(xué)計算中是不存在自增或 者自減運(yùn)算的,由于軟件開發(fā)中經(jīng)常需要按照次序連續(xù)處理數(shù)據(jù),計算機(jī)專家們按照自己的使 用習(xí)慣設(shè)計了自增自減運(yùn)算。這些運(yùn)算經(jīng)常用于在開發(fā)編碼中,可以使用的程序編碼變的非常 干練簡潔。自增運(yùn)算、自減運(yùn)算符號是++、--,是單元運(yùn)算,也就是說一個操作元素參與運(yùn) 算,其基本運(yùn)算規(guī)則是將參與運(yùn)算的變量增加或者減少1。
a++:代表 先賦值 (先將a的值作為a++的值) 后運(yùn)算 (+1)
++a: 代表 先運(yùn)算(先將變量的值+1) 后賦值 (然后將+1后的值賦值給表達(dá)式)

按照寫法可以分為4種情況:
i++ 稱為“后加加”:? 先取變量i的值作為 i++ 整體表達(dá)式的值,再將i的值增加1
假設(shè)運(yùn)算前i=1,則運(yùn)算后 i++ 為1 ,i為2
++i 稱為“先加加”:先將i的值增加1,再取變量i的值作為 ++i 整體表達(dá)式的值
假設(shè)運(yùn)算前i=1,則運(yùn)算后 ++i 為2 ,i為2
i-- 稱為“后減減”:先取變量i的值作為 i-- 整體表達(dá)式的值,再將i的值減少1
假設(shè)運(yùn)算前i=1,則運(yùn)算后 i-- 為1 ,i為0
--i 稱為“先減減”:先將i的值減少1,再取變量i的值作為 --i 整體表達(dá)式的值
假設(shè)運(yùn)算前i=1,則運(yùn)算后 --i 為0 ,i為0
二、關(guān)系運(yùn)算符
關(guān)系運(yùn)算符用于比較數(shù)值的大,小,相等關(guān)系,Java關(guān)系運(yùn)算符和數(shù)學(xué)上的關(guān)系運(yùn)算規(guī)則類似,在開發(fā)中用于判斷數(shù)據(jù)的大小以及是否相等,包括六個運(yùn)算符:
大于(>)、小于(<)
大于等于(>=)、小于等于(<=)
等于(==)、不等于(!=)
運(yùn)算結(jié)果是boolean類型,如果成立就為true,不成立就為false
三、邏輯運(yùn)算符
邏輯運(yùn)算建立在關(guān)系運(yùn)算的基礎(chǔ)之上,邏輯運(yùn)算包括:?與(&&)、或(||)、非(!)
參與運(yùn)算的變量或者表達(dá)式,包括最后的運(yùn)算結(jié)果都?boolean類型
1、使用?&&(與)?運(yùn)算符
兩個boolean變量參與?&&?運(yùn)算時,兩個變量都為true,結(jié)果才為true,否則結(jié)果為false。
適用場景:在做登陸頁面的時候,我們第一次注冊完賬號和密碼后會先幫我們存儲到數(shù)據(jù)庫中,我們第二次登陸的時候,會先去數(shù)據(jù)庫里查找,我們輸入的賬號和密碼是不是和數(shù)據(jù)庫里的匹配,只有賬號和密碼返回都為true了,那么才能登陸成功。
所以邏輯與表達(dá)得是并且的關(guān)系,兩邊都為真則為真,見false則false
2、使用?||?(或)運(yùn)算符
兩個boolean變量運(yùn)算時,當(dāng)一個變量值為true時,結(jié)果為true,兩個都為false時結(jié)果為false
適用場景:在去銀行貸款的時候,會有幾個要求,要么是銀行的VIP或者要么信用積分到一定的程度都可以貸款,只要兩個條件滿足一個就可以了,
還有就是我們?nèi)ワ埖瓿燥埖臅r候,要結(jié)賬了,我們沒有帶現(xiàn)金,用微信能不能結(jié)賬 能,再假設(shè),我微信沒有錢,我用支付寶能不能結(jié),也能
所以 邏輯或,有一邊為真則為真,見true則true
3、使用?!?運(yùn)算符
!?運(yùn)算只會有一個boolean變量參與運(yùn)算,?運(yùn)算后的值與該變量相反
簡單來說就是變量為true時結(jié)果為false,變量為false時結(jié)果為true
例如:
經(jīng)典案例:判斷閏年問題
閏年是比普通年份多出一段時間的年份,目的是為了彌補(bǔ)人為規(guī)定的紀(jì)年與地球公轉(zhuǎn)產(chǎn)產(chǎn)生
的差異。
回歸年:365天5時48分46秒 ,就是太陽直射點來回的周期,也就是通常說的一年
目前使用的格里高利歷閏年規(guī)則如下:
公元年份除以4可整除但除以100不可整除,為閏年。
公元年份除以400可整除,為閏年。?
Scanner類的使用
前面學(xué)習(xí)內(nèi)容中想對變量賦值,所賦之值都是一個固定的值,像int a=1;??int b = 25;而很多時候想給變量賦的值并非是一個固定的值,比如,用戶輸入的值是幾,就給變量賦值為幾,這樣的情況可以借助于Scanner類實現(xiàn),使用步驟如下:
1.??在package下:
導(dǎo)入Scanner ApI:import java.util.Scanner
2.??在main()中:創(chuàng)建Scanner對象:Scanner sc =new Scanner(System.in);
3.??在第2步驟之下:調(diào)用方法獲取用戶輸入的信息:int year = console.nextInt();
next()通常接收連續(xù)字符串,如果有空格只輸出第一連續(xù)字符
nextLine()接收一整行
四、賦值運(yùn)算符
1、使用?=?進(jìn)行賦值運(yùn)算
=?稱為賦值運(yùn)算符,用來對變量賦值。賦值表達(dá)式除了可以將右邊的表達(dá)式計算出來賦給左邊以外,其本身也有值,本身就是所賦之值
2、復(fù)合運(yùn)算符
擴(kuò)展賦值表達(dá)式就是在賦值表達(dá)式?=?前加上其他運(yùn)算符。
包括:+=、-=、*=、/=、%=
需要注意的是,擴(kuò)展賦值表達(dá)式包含強(qiáng)制類型轉(zhuǎn)換。
五、字符串連接運(yùn)算符
如果加號兩側(cè)都是數(shù)值就是數(shù)值加法
如果加號的一側(cè)出現(xiàn)了字符串,就按照字符串連接運(yùn)算計算
字符串連接的時候,會將不是字符串的數(shù)據(jù)轉(zhuǎn)換為字符串再進(jìn)行連接

六、三元運(yùn)算符
三元運(yùn)算符也稱為“條件運(yùn)算符”或者“條件表達(dá)式”,其本質(zhì)上是一種簡化版的條件判斷
語句。因為其簡方便在開發(fā)中經(jīng)常被使用
條件運(yùn)算符又稱為?三目運(yùn)算符,其結(jié)構(gòu)為:?boolean表達(dá)式 ? 表達(dá)式1:表達(dá)式2
? 是格式要求,代表判斷條件是否成立.條件運(yùn)算符的規(guī)則如下:
先計算boolean表達(dá)式
如果boolean表達(dá)式的值為true,整個表達(dá)式的值為表達(dá)式1的值
如果boolean表達(dá)式的值為false,整個表達(dá)式的值為表達(dá)式2的值?

?案例:將計算閏年的邏輯運(yùn)算改成三目運(yùn)算
