五青伤、運算符使用
說到運算符,你肯定第一反應(yīng)就是數(shù)學(xué)中的加殴瘦、減狠角、乘、除痴施。沒錯想法很正確擎厢,但是呢這只是一少部分。今天呢辣吃,我們先講的不是運算符,先講一下類型轉(zhuǎn)化的知識芬探。
基本數(shù)據(jù)類型轉(zhuǎn)化
在上節(jié)課呢神得,我們已經(jīng)講解了Java中的八大數(shù)據(jù)類型,在這八大數(shù)據(jù)類型中偷仿,就拿一個最簡單的例子來說哩簿,byte類型和int類型,他們之間是有區(qū)別的酝静,那么卻別在哪里呢节榜,我們上節(jié)課已經(jīng)說過了。區(qū)別就在于他們的取值范圍不同别智,但是宗苍,其實他們本質(zhì)上類型都是一樣的,都是整型薄榛。
那么問題來了讳窟,既然都是整型,他們之間是不是可以互相轉(zhuǎn)化了呢敞恋?舉個例子:
byte a = 100;
int b = a;
我們可以這樣做嗎丽啡?答案肯定是可以的,而且不需要任何操作硬猫,這種形式就叫做基本數(shù)據(jù)類型轉(zhuǎn)化补箍。
做一個很簡單的比喻,我們的基本數(shù)據(jù)類型都是有范圍的啸蜜,byte類型的范圍是一個100ml的飲料瓶的話坑雅,那么int類型的范圍可能就是500ml的飲料瓶。我們當(dāng)然可以把100ml的飲料瓶中的水全部倒進500ml的飲料瓶中啦盔性,這是一個常識性問題霞丧。100ml的瓶子最多只能裝下100ml的水,所以顯而易見冕香,全部倒入500ml的瓶子中蛹尝,也不會使500ml的瓶子溢出來水后豫。
而我們剛才做的就是這樣的一個效果,所以程序允許這樣的事情發(fā)生突那。那么問題來了挫酿,如果反過來呢?
int a = 100 ;
byte b = a ;
同學(xué)們可以自己試一下愕难,這樣會出現(xiàn)問題的早龟,原因呢,舉個例子猫缭,我們想把500ml的瓶子中的水葱弟,全部倒入100ml的瓶子中,那么很容易出現(xiàn)問題猜丹,就是容量的問題芝加,100ml的瓶子可能就會溢出水來。那么我們真的遇到這種情況該怎么辦呢射窒?下面就來講解一下藏杖。
強制數(shù)據(jù)類型轉(zhuǎn)化
首先呢,先來考慮一下脉顿,如果我們真的把500ml的瓶子中的水蝌麸,全部倒入100ml的瓶子中,會發(fā)生什么情況艾疟?
1.100ml的瓶子不會溢出水来吩,因為500ml的瓶子中不足100ml的水。
2.100ml的瓶子中會溢出水汉柒,因為500ml的瓶子中的水超過100ml了误褪。
這兩種情況是顯而易見的,那么我們應(yīng)該怎么解決呢碾褂?這里我們說到了強制這種概念兽间,對,碰到這種必須的情況正塌,我們就不需要管100ml的瓶子會不會溢出水了嘀略,直接倒吧,溢出就溢出了乓诽,那么在代碼中帜羊,我們怎么表示呢?下面我們就來看看鸠天。
int a = 100 ;
byte b = (byte) a ;
看到這里讼育,我們應(yīng)該就能明白,如果進行強制數(shù)據(jù)類型轉(zhuǎn)化了。將要轉(zhuǎn)化的類型利用括號寫在某一個變量的左邊就可以了奶段。
好了饥瓷,那么講到這里,我們應(yīng)該理解了數(shù)據(jù)類型轉(zhuǎn)化了兩種形式了痹籍,這個在我們以后的講解中呢铆,還會提到~所以希望大家能記住。
下面來講解一下我們的運算符蹲缠。
運算符
運算符按照功能分為很多類棺克,不過呢,我們只來講下面的三大類:算數(shù)運算符线定,條件運算符娜谊,邏輯運算符。
- 算術(shù)運算符
+:加
-:減
*:乘
/:除
前四個渔肩,就沒有什么必要介紹了因俐,下面我們來介紹一下剩下的幾個運算符
%:求余--求得余數(shù)
int a = 10;
int b = a%3;
// 打印a求余3的結(jié)果,為1
System.out.println(b);
++:自加--在本身之上加1
int a = 10;
// a++ 就相當(dāng)于 a = a + 1 ;
a++;
// 打印a自加的結(jié)果周偎,為11
System.out.println(a);
--:自減--在本身之上加1
int a = 10;
// a++ 就相當(dāng)于 a = a - 1 ;
a--;
// 打印a自加的結(jié)果,為9
System.out.println(a);
=:等于--就是得到最后的結(jié)果撑帖,這個也不用說的太多了蓉坎。
最基本的用法,就是這樣胡嘿。不過呢蛉艾,這里面有兩個比較特殊的,++和--衷敌。
我們先來看一個例子勿侯。
int a = 10 ;
int b = a++;
System.out.println(b);
大家可以試一下,得到的打印結(jié)果是10缴罗。那么這是為什么呢助琐?
這里我們要專門解釋一下,由于其實++或者--其實是一個等式面氓,也就是可以得到最終結(jié)果的式子兵钮,所以類似這樣的式子:int b = a++;這樣的式子,其實是有兩個等式組成的舌界,也就是掘譬,int b = a ; a = a + 1;這兩個式子,所以呢呻拌,顯而易見的葱轩,程序是先計算的int b = a ; 而不是a = a + 1;。
那么有些學(xué)生就會有問題了,我如果就想這么干靴拱,那么我有什么方式呢垃喊?對,我們就來看一下缭嫡,如何讓他先計算a的自加或者自減運算缔御。
int a = 10 ;
// 把++符號,放在a的前面妇蛀,系統(tǒng)會強制先運算a的自加
int b = ++a;
System.out.println(b);
好的耕突,大家應(yīng)該看到了,其實++是可以放在變量的前面或者后面的评架,而放在前面或者后面眷茁,效果也是不一樣的。
放在前面纵诞,先運算++上祈;
放在后面,先運算a浙芙,之后再讓a自加登刺。
好了,這一節(jié)課就算是講完了嗡呼,至于條件運算符和邏輯運算符纸俭,之后的課會講到,不要著急哦~
哈哈祝大家以后學(xué)習(xí)更加進步~