<<風(fēng)雨安卓路之JAVASE----(2)類型和運(yùn)算>>

常量和變量
常量:程序中固定不變化的值。
變量的定義:表示存儲(chǔ)空間,可用來(lái)存放某一類型的常量碎浇,沒有固定值赊淑,并可以重復(fù)使用诫欠,也可以用來(lái)存儲(chǔ)某種類型的未知數(shù)據(jù)死相。

常量分類:

字面值常量:直接給出的一個(gè)值,比如:整數(shù)常量1忿项,2哼转,3窃这,小數(shù)常量3.14瞳别,布爾常量false,true等杭攻。
定義的final變量:后講.

變量的特點(diǎn):

① 占據(jù)著內(nèi)存中的某一塊存儲(chǔ)區(qū)域祟敛;

② 該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型);

③ 可以被重復(fù)使用;

④ 該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化兆解;


變量的分類:

隨著變量定義在類中的位置不同馆铁,故把變量分成兩大類:

成員變量:直接定義在類里的變量,方法外面,又稱為全局變量或字段锅睛。

局部變量:變量除了成員變量之外埠巨,其他就是局部變量。根據(jù)定義的位置不同有3種表現(xiàn)形式:

方法形參现拒,方法內(nèi)變量辣垒,代碼塊變量。

變量作用域:

指變量的存在范圍印蔬,只有在這個(gè)范圍內(nèi)勋桶,程序代碼才能訪問(wèn)它。當(dāng)一個(gè)變量被定義時(shí),它的作用域就確定了:
作用域是定義開始到定義所在的花括號(hào)結(jié)束;

基本數(shù)據(jù)類型轉(zhuǎn)換
前面談到變量的時(shí)候侥猬,說(shuō)變量是有類型的例驹,那么Java數(shù)據(jù)有多少和哪些類型呢?總得來(lái)說(shuō)陵究,分成兩種:
① 基本數(shù)據(jù)類型眠饮,又稱為原生數(shù)據(jù)類型;

② 引用數(shù)據(jù)類型铜邮,又稱為對(duì)象數(shù)據(jù)類型仪召;

java的基本數(shù)據(jù)類型.png

布爾類型(boolean):
boolean類型:通常用于邏輯運(yùn)算和程序流程控制。

該類型的值只能是true 或 false松蒜,表示真或假扔茅。

不可以使用0或非0的整數(shù)來(lái)代替false和true,區(qū)分于C語(yǔ)言秸苗。
整數(shù)類型(byte-short-int-long):
byte < short < int < long類型:

各自表示的數(shù)據(jù)范圍是不一樣的.

整型常量的四種表示形式:

① 二進(jìn)制整數(shù):0B或0b開頭(Java7的新特性)召娜,如:int a = 0B110;

② 八進(jìn)制整數(shù):要求以0開頭,如 int a = 012;

③ 十進(jìn)制整數(shù):如:int a = 17;

④ 十六進(jìn)制整數(shù):要求0X或0x開頭惊楼,如int a = 0x12;

Java語(yǔ)言的整型常量默認(rèn)是int型玖瘸,聲明long型變量后加上‘l’或‘L秸讹,因小寫的l容易和數(shù)字1相混淆,建議使用大寫L雅倒。

默認(rèn)情況下,一個(gè)整型的字面量默認(rèn)是int類型.
小數(shù)類型(float-double):
根據(jù)精確度細(xì)分為:
float璃诀、double類型:
表示小數(shù)類型又稱為浮點(diǎn)類型,其中float表示單精度類型蔑匣,double表示雙精度類型劣欢,但是二者都不能表示精確的小數(shù)。

Java的浮點(diǎn)類型常量有兩種表現(xiàn)形式:

?十進(jìn)制形式: 例如:3.14 裁良,168.0凿将, .618

?科學(xué)計(jì)數(shù)法形式: 例如:3.14e2, 3.14E2价脾, 1000E-2

科學(xué)計(jì)數(shù)法表達(dá)式返回的結(jié)果是double類型牧抵。

默認(rèn)情況下,一個(gè)小數(shù)類型的字面量默認(rèn)是double類型.若要聲明一個(gè)常量為float型,則需在常量后加上f 或 F彼棍,double常量后面的D或d可省略灭忠。

注意:Java里只有浮點(diǎn)型的變量才可以接受科學(xué)計(jì)算式結(jié)果:

因?yàn)閒loat和double都不能精確的表示小數(shù)膳算,那么在精度要求高的系統(tǒng)比如銀行系統(tǒng)里座硕,那怎么表示精確的小數(shù)呢?后面我們會(huì)講BigDecimal類型涕蜂,它表示任意精度的數(shù)據(jù)华匾。
char類型:表示16位的無(wú)符號(hào)整數(shù)或者Unicode字符,Java對(duì)字符采用Unicode字符編碼机隙。

Unicode收集了世界上所有語(yǔ)言文字中的字符(符號(hào))蜘拉,是一種跨平臺(tái)的編碼方式,Java的字符占兩個(gè)字節(jié)有鹿,可以表示一個(gè)漢字旭旭。

什么是編碼?

計(jì)算機(jī)只能表示0和1兩個(gè)數(shù)葱跋,于是人們做規(guī)定使用一個(gè)數(shù)字去表示一個(gè)特定的字符持寄,比如a使用97表示。

char前256個(gè)字符和ASCII(美國(guó)信息交互標(biāo)準(zhǔn)編碼)碼中的字符重復(fù)娱俺。


char常量有3種表示形式:

① 直接使用單個(gè)字符來(lái)指定字符常量稍味,格式如'◆'、'A'荠卷,'7',注意使用單引號(hào)括起來(lái)模庐;

② 直接作為十進(jìn)制整數(shù)數(shù)值使用,但是數(shù)據(jù)范圍在[0油宜,65535]掂碱,格式如97怜姿,但是打印出來(lái)的值依然是ASCII碼表對(duì)于的符號(hào),如97打印出來(lái)是字符a。

③ 和2一樣疼燥,只不過(guò)表示的是16進(jìn)制的數(shù)值社牲,格式如'\uX',X表示16進(jìn)制整數(shù)悴了;如:97的16進(jìn)制是61搏恤。那么表示為‘\u0061’打印出來(lái)也是a。

所以有人說(shuō)char本質(zhì)上也是整型湃交,也是有道理的熟空。

char前256個(gè)字符和ASCII(美國(guó)信息交互標(biāo)準(zhǔn)編碼)碼中的字符重復(fù),可查表搞莺。

ASCII字符代碼表一.png

當(dāng)要表示的數(shù)據(jù)超出數(shù)據(jù)類型的臨界范圍時(shí)息罗,稱為溢出。

int intMax = 2147483647;//int最大值

intMax = intMax + 1;//編譯時(shí)只檢查語(yǔ)法才沧,所以不報(bào)錯(cuò)

System.out.println("intMax + 1= " + intMax);

int intMin = -2147483648;//int最小值

intMin = intMin - 1;

System.out.println("intMin - 1= " + intMin);

分析數(shù)據(jù)發(fā)生紊亂的原因:溢出情況發(fā)生時(shí)程序并沒有做數(shù)據(jù)范圍檢查處理迈喉,此時(shí)會(huì)出現(xiàn)數(shù)據(jù)紊亂情況。
基本數(shù)據(jù)類型轉(zhuǎn)換:
--
在8大基本數(shù)據(jù)類型中,boolean不屬于數(shù)值類型,不參與轉(zhuǎn)換.


轉(zhuǎn)換規(guī)則其實(shí)就是各自數(shù)據(jù)類型的空間大小.
數(shù)據(jù)類型的轉(zhuǎn)換操作,分兩種:
1):自動(dòng)類型轉(zhuǎn)換.(把小類型轉(zhuǎn)換為大類型)
--
2):強(qiáng)制類型轉(zhuǎn)換.(把大類型轉(zhuǎn)換為小類型)


自動(dòng)類型轉(zhuǎn)換温圆,也稱為“隱式類型轉(zhuǎn)換:

當(dāng)把小數(shù)據(jù)范圍類型的數(shù)值或變量賦給另一個(gè)大數(shù)據(jù)范圍類型變量挨摸,系統(tǒng)可以自動(dòng)完成類型轉(zhuǎn)型。這好比把裝一斤水容器里的水倒進(jìn)可以裝兩斤水的容器里一樣岁歉。

再次強(qiáng)調(diào):boolean 類型是不可以轉(zhuǎn)換為其他數(shù)據(jù)類型得运。

強(qiáng)制類型轉(zhuǎn)換,也稱為“顯示類型轉(zhuǎn)換:

當(dāng)把大范圍類型的數(shù)值或變量賦給另一個(gè)小范圍類型變量時(shí)锅移,此時(shí)系統(tǒng)不能自動(dòng)完成轉(zhuǎn)換熔掺,需要加上強(qiáng)制轉(zhuǎn)換符,但這樣的操作可能造成數(shù)據(jù)精度的降低或溢出非剃,所以使用時(shí)要格外注意置逻。

基本數(shù)據(jù)類型的轉(zhuǎn)換.png

算術(shù)運(yùn)算符
Arithmetic operators

用來(lái)處理四則運(yùn)算的符號(hào)


加號(hào):在操作數(shù)值、字符备绽、字符串時(shí)其結(jié)果是不同的券坞,當(dāng)兩個(gè)字符相加得到的是ASCII碼表值,當(dāng)兩個(gè)字符串相加時(shí)表示將兩個(gè)字符串連接在一起疯坤,從而組成新的字符串报慕。

除號(hào):整數(shù)在使用除號(hào)操作時(shí),得到的結(jié)果仍為整數(shù)(小數(shù)部分忽略)压怠,當(dāng)整數(shù)除以0的時(shí)候眠冈,會(huì)引發(fā)算術(shù)異常。

  正無(wú)窮大(Infinity):當(dāng)一個(gè)正浮點(diǎn)類型數(shù)除以0時(shí),或者正整數(shù)除以0.0時(shí);

         負(fù)無(wú)窮大(-Infinity):當(dāng)一個(gè)負(fù)浮點(diǎn)類型數(shù)除以0時(shí),或者負(fù)整數(shù)除以0.0時(shí);

         NaN(Not a Number):當(dāng)0.0除以0.0時(shí);

取模:模數(shù)的符號(hào)忽略不計(jì),結(jié)果的正負(fù)取決于被模數(shù).

注意:無(wú)窮大和NaN都屬于double浮點(diǎn)類型,但是所有正無(wú)窮大都是相等的,所有負(fù)無(wú)窮大也是相等的,NaN永遠(yuǎn)不相等,也不等于自己.


++和--操作:
自增:++蜗顽,遞增操作符布卡,使變量值增加1,有前置和后置之分雇盖,只能操作變量忿等。

自減:-- ,遞減操作符崔挖,使變量值減去1贸街,有前置和后置之分,只能操作變量狸相。

自增和自減具體操作是一樣的薛匪,僅僅是一個(gè)是加1,一個(gè)是減1而已脓鹃,現(xiàn)在單講++:

代碼 result ++和 ++result逸尖,都將使result變量的值加1。


賦值運(yùn)算符
assigning operator

專門為變量指定值或重新指定值


注意Java支持同時(shí)給多個(gè)變量賦值瘸右,好比支持同時(shí)聲明多個(gè)變量一樣娇跟,但因影響代碼可讀性,故也不推薦太颤。

每一個(gè)變量單獨(dú)定義,并單獨(dú)賦值.
加等于:x += 5; 相當(dāng)于 x = x + 5苞俘,但還包括隱式類型轉(zhuǎn)換。

public class Hello{

public static void main(String[] args){     
    int a, b, c;      //不推薦
    a = b = c = 5; //不推薦
    short s = 5;
    //s = s + 3;//編譯出錯(cuò)栋齿,需要強(qiáng)轉(zhuǎn)  s = (short)(s + 3); 
    s += 3;//編譯OK苗胀,隱式類型轉(zhuǎn)換
}

}


比較運(yùn)算符
comparison operator

用于比較兩個(gè)變量或常量之間的關(guān)系,比較運(yùn)算符的結(jié)果是boolean類型,其操作格式為:

boolean result = 表達(dá)式A 比較運(yùn)算符 表達(dá)式B;


==:等于瓦堵,若比較的是兩個(gè)操作數(shù)都是數(shù)值類型,即使他們的類型不同歌亲,只要值相同就返回true菇用。

當(dāng)然==也可以比較引用數(shù)據(jù)類型,留到后面講陷揪。

instanceof:在講面向?qū)ο蟮臅r(shí)候惋鸥,再細(xì)講。


public static void main(String[] args){

    System.out.println(65 == 'A');//true

    System.out.println(1.0 == 1);//true

    System.out.println(true == false);//false



    System.out.println(5 >= 5);//true

    System.out.println(5 >= 5);//true

    System.out.println(5 != 5);//false

}

三元運(yùn)算符
ternary operator

現(xiàn)在給一個(gè)小數(shù)悍缠,需要求出其四舍五入之后的結(jié)果卦绣,怎么完成該功能?

思路:取得整數(shù)部分飞蚓,再取得小數(shù)部分滤港,再判斷小數(shù)部分和0.5的大小關(guān)系,若大于等于趴拧,結(jié)果就是整數(shù)部分加1溅漾,否則就是整數(shù)部分山叮。

三元運(yùn)算符,表示有三個(gè)元素參與的表達(dá)式添履,所以又稱為三目運(yùn)算符屁倔,其語(yǔ)義表示if-else.

語(yǔ)法格式:X ? Y :Z, 其中x為boolean類型表達(dá)式暮胧,先計(jì)算X的值锐借,若X結(jié)果為true則整個(gè)三目運(yùn)算表達(dá)式的結(jié)果是Y,否則就是Z往衷。三目運(yùn)算符結(jié)果的類型由Y和Z決定瞎饲。
邏輯運(yùn)算符
logical operator

分析下列語(yǔ)句什么意思:(AND,OR)
張三和李四周末要值班:二者都來(lái)值班才是我期待的結(jié)果。

張三或李四周末要值班:二者只要有一個(gè)值班就是我期待的結(jié)果炼绘。

用于操作兩個(gè)boolean類型的變量或常量嗅战,結(jié)果類型也是boolean。

語(yǔ)法格式為:boolean result = boolean表達(dá)式A 邏輯運(yùn)算符 boolean表達(dá)式B;


&:表示并且俺亮,當(dāng)操作數(shù)A和B都為true結(jié)果才為true驮捍,否則結(jié)果result 是false。

&&:和&結(jié)果相同脚曾,具有短路效果东且,如果左邊操作數(shù)A是false,result 一定為false本讥,且不運(yùn)行B的運(yùn)算珊泳。

|:表示或者,A和B都為false結(jié)果result為false拷沸,只要有A或B是true色查,結(jié)果就是true。

||:和|結(jié)果相同撞芍,具有短路效果秧了,如果左邊操作數(shù)A是true,result一定為true序无,且不運(yùn)行B的運(yùn)算验毡。

^:判斷A和B是否不同,不同則為true帝嗡,相同則為false晶通。

!:取反,!true結(jié)果是false哟玷,!fasle結(jié)果是true狮辽。

位運(yùn)算符

位運(yùn)算符.png

運(yùn)算符的操作優(yōu)先級(jí)

運(yùn)算符的優(yōu)先級(jí).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子隘竭,更是在濱河造成了極大的恐慌塘秦,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件动看,死亡現(xiàn)場(chǎng)離奇詭異尊剔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)菱皆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門须误,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人仇轻,你說(shuō)我怎么就攤上這事京痢。” “怎么了篷店?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵祭椰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疲陕,道長(zhǎng)方淤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任蹄殃,我火速辦了婚禮携茂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诅岩。我一直安慰自己讳苦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布吩谦。 她就那樣靜靜地躺著鸳谜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逮京。 梳的紋絲不亂的頭發(fā)上卿堂,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音懒棉,去河邊找鬼。 笑死览绿,一個(gè)胖子當(dāng)著我的面吹牛策严,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饿敲,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼妻导,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起倔韭,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤术浪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寿酌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胰苏,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年醇疼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硕并。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秧荆,死狀恐怖倔毙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乙濒,我是刑警寧澤陕赃,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站颁股,受9級(jí)特大地震影響么库,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜豌蟋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一廊散、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梧疲,春花似錦允睹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至该互,卻和暖如春米者,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宇智。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工蔓搞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人随橘。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓喂分,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親机蔗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒲祈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對(duì)java的編譯器有特殊的意義甘萧,他們用來(lái)表示一種數(shù)據(jù)類型,或...
    哈哈哎呦喂閱讀 661評(píng)論 0 0
  • 前言 這個(gè)系列是java spring mvc 源碼閱讀與分析的一個(gè)系列閱讀源碼分支為 spring初始化流程 ...
    金發(fā)萌音閱讀 810評(píng)論 0 1
  • 我們要與自己的脾氣摩拳擦掌,要與自己的個(gè)性和平共處酸钦,不要讓自己敗在脾氣上怪得,付出的一切都敵不過(guò)你不可理喻的脾氣,也不...
    敏子慧慧閱讀 178評(píng)論 0 0
  • 我們微商在把自己產(chǎn)品買個(gè)客戶的時(shí)候钝鸽,難免會(huì)遇到給客戶提出一些試探性問(wèn)題汇恤,這時(shí)候若處理不當(dāng)?shù)脑挘蔷秃苡锌赡苁沟靡还P...
    修正寶兒閱讀 355評(píng)論 0 0
  • 今天拔恰,我和媽媽下去打羽毛球因谎。 激烈的比賽開始了!我和媽媽都做好了準(zhǔn)備颜懊。首先發(fā)球方是高手———媽媽财岔!我很...
    毛毛蟲毛毛蟲閱讀 361評(píng)論 1 1