??前兩篇已經(jīng)將開(kāi)發(fā)環(huán)境搭建完成签赃,如果你已經(jīng)按之前的教程按部就班的完成了部署休傍,那么世界上最優(yōu)秀的編程語(yǔ)言之一和世界上最優(yōu)秀的IDE之一已經(jīng)出現(xiàn)在你的電腦上(此處應(yīng)有掌聲)醇坝,如果你還沒(méi)入門(mén)笋粟,或者正在臺(tái)階上踱步痊臭,可能你還不能理解這個(gè)“最優(yōu)秀”的含義棺蛛,沒(méi)有關(guān)系,這頓美味需要我們來(lái)細(xì)嚼慢咽才能品嘗到它的獨(dú)特之處。
??接下來(lái)随夸,就讓我們一起來(lái)正式揭開(kāi)Java的面紗。
??Java是一門(mén)簡(jiǎn)單震放、面向?qū)ο蟊龆尽⒏咝阅堋踩愿叩钏臁⒔研詮?qiáng)诈铛、移植性好的語(yǔ)言(一本正經(jīng)的胡說(shuō)八道中)。Java的語(yǔ)法跟C++很像墨礁,如果有過(guò)C++學(xué)習(xí)經(jīng)驗(yàn)的人幢竹,學(xué)習(xí)Java上手會(huì)容易很多,Java一開(kāi)始很多特性都跟C++相同恩静,比如基本的程序結(jié)構(gòu)焕毫、類(lèi)、語(yǔ)法規(guī)則等等驶乾,但是刪除了其中很多復(fù)雜的東西邑飒,比如頭文件,結(jié)構(gòu)轻掩,聯(lián)合幸乒,操作符重載、虛基類(lèi)等等唇牧,看到這里罕扎,學(xué)過(guò)C++的你可能會(huì)覺(jué)得很高興,終于不用跟那些奇奇怪怪的東西打交道了丐重。別高興的太早腔召,因?yàn)椋€有讓你更高興的(手動(dòng)滑稽)扮惦,那最頭疼的指針操作部分臀蛛,也去掉了,可以說(shuō)是一個(gè)純凈簡(jiǎn)化版的C++崖蜜,但也添加了很多自己的特性浊仆,沒(méi)有了多重繼承,取而代之的是接口和內(nèi)部類(lèi)豫领,由于不允許直接操作指針抡柿,所以就不會(huì)因?yàn)閷?duì)指針的一頓瞎操作而出現(xiàn)神奇的bug,當(dāng)然等恐,也少了很多尋找bug的樂(lè)趣(尷尬)洲劣,Java在安全性能上是可以信任的备蚓,因?yàn)橛肋h(yuǎn)不會(huì)存取一個(gè)壞的指針,而造成內(nèi)存分配的錯(cuò)誤囱稽,也不存在內(nèi)存泄漏問(wèn)題郊尝。所有那些因?yàn)橹羔樢鸬陌踩[患,都不存在的战惊。
??也許說(shuō)了這么多流昏,對(duì)于新手的你,看的云里霧里样傍,不知所云横缔,沒(méi)關(guān)系,你只需要知道衫哥,Java上手并不難茎刚,只比繞操場(chǎng)跑上十來(lái)圈難那么一點(diǎn)點(diǎn),但如果你只是想來(lái)散散步的話(huà)撤逢,那你可能沒(méi)有機(jī)會(huì)享受到汗流浹背后的滿(mǎn)足感了膛锭。
??言歸正傳,Java可以寫(xiě)桌面蚊荣、可以寫(xiě)Android初狰、可以寫(xiě)服務(wù)器、可以寫(xiě)企業(yè)級(jí)業(yè)務(wù)互例、可以寫(xiě)互聯(lián)網(wǎng)業(yè)務(wù)奢入。如果你以后想在安卓開(kāi)發(fā)、服務(wù)器開(kāi)發(fā)媳叨、網(wǎng)站后臺(tái)開(kāi)發(fā)和維護(hù)上有所發(fā)展腥光,那Java將是你不錯(cuò)的選擇。如果只是想來(lái)膜拜一下這門(mén)常年位居編程開(kāi)發(fā)語(yǔ)言排行榜榜首的語(yǔ)言糊秆,那也可以來(lái)看看武福,俗話(huà)說(shuō)的好,技多不壓身嘛痘番,以后見(jiàn)了不會(huì)編程的朋友捉片,還可以裝個(gè)X說(shuō)我也是學(xué)過(guò)Java的人(憋笑)。
??簡(jiǎn)單介紹了Java的功能后汞舱,能堅(jiān)持看到這說(shuō)明你已經(jīng)有點(diǎn)小心動(dòng)伍纫,想要繼續(xù)學(xué)下去,那就跟我一起來(lái)進(jìn)行系統(tǒng)的學(xué)習(xí)吧昂芜。
??要學(xué)習(xí)Java翻斟,自然要從基本的數(shù)據(jù)類(lèi)型說(shuō)起,那么说铃,什么是數(shù)據(jù)類(lèi)型访惜?顧名思義嘛,就是不同的數(shù)據(jù)有不同的類(lèi)型腻扇,就像人按性別分男女债热,按年齡分老中少,按性情分攻受(咳咳幼苛,這里只是為了舉個(gè)栗子)窒篱,在java里,基本的數(shù)據(jù)類(lèi)型有四種舶沿,整數(shù)型墙杯,浮點(diǎn)型,布爾型和字符型括荡。下面來(lái)一一介紹高镐。
??整型,自然就是用來(lái)存放整數(shù)的畸冲, 比如說(shuō):1,2,3,4,100嫉髓,等等,一般的整數(shù)都可以用int型來(lái)存放和操作邑闲,整型還可以根據(jù)取值范圍需求不同再細(xì)分成int型算行,short型,long型苫耸,byte型州邢,這幾個(gè)兄弟排個(gè)序,從大到小分別是long褪子、int量淌、short、byte褐筛。long型最大类少,占用8個(gè)字節(jié)(在java中,討論最小的存儲(chǔ)單元是bit渔扎,也就是位硫狞,byte是字節(jié),跟位的換算是:1byte=8bit晃痴,1kb=1024bytes=210bytes)残吩,作為整型中的老大,占用8*8=64位倘核,所以除去第一位用于儲(chǔ)存符號(hào)位泣侮,其它63位可以用來(lái)表示數(shù)值大小,所以它的表示范圍為:-263 — 263-1紧唱。大概是百億億的級(jí)別活尊,所以要是用來(lái)存放你的銀行卡余額的話(huà)隶校,還是不要?jiǎng)跓﹍ong型了(滑稽)。作為最常用的整數(shù)型老二蛹锰,int型可謂是人盡皆知深胳,幾乎成了整型的代表人物,它只占用4個(gè)字節(jié)铜犬,取值范圍為-231 — 231-1舞终,比21億稍微多一點(diǎn)。而老三short癣猾,顧名思義敛劝,比較“短”,不能跟18cm的long型相提并論纷宇,只占用2個(gè)字節(jié)夸盟,表示范圍為-215 -- 2^15-1,也就是-32768 -- 32767呐粘,做小范圍的加減乘除的話(huà)是夠用的满俗。最后介紹的老四,byte型作岖,只占用一個(gè)字節(jié)唆垃,可謂是相當(dāng)拮據(jù),表示范圍為 -128-127痘儡。所以存余額的話(huà)辕万,byte,short型太短沉删,long型太長(zhǎng)渐尿,所以用int型最經(jīng)濟(jì)實(shí)惠。
??初學(xué)編程的人可能會(huì)問(wèn)了矾瑰,好好的整數(shù)型砖茸,還分那么細(xì)干嘛。這你就不懂了吧殴穴,舉個(gè)栗子凉夯,因?yàn)橛糜诖娣艛?shù)據(jù)的內(nèi)存空間是以位為基本單位,可以理解為很多很多相同的小盒子采幌,相同的數(shù)據(jù)類(lèi)型需要用同樣大小的空間劲够,不然程序就不知道數(shù)據(jù)的開(kāi)始和結(jié)束位置,用數(shù)據(jù)頭部來(lái)存放大小長(zhǎng)度信息顯然有些浪費(fèi)空間休傍,那么現(xiàn)在的問(wèn)題是征绎,一個(gè)整數(shù),用多大的空間合適磨取?你可能會(huì)覺(jué)得人柿,都用同樣大小的空間不就好了柴墩,那都用8個(gè)字節(jié)來(lái)存儲(chǔ),用來(lái)存放大數(shù)值的時(shí)候很好用凫岖,但是用來(lái)存放你的年齡的時(shí)候拐邪,仿佛浪費(fèi)的空間就有點(diǎn)多了,就好比現(xiàn)在你有一個(gè)籃球隘截,一個(gè)網(wǎng)球,一個(gè)足球汹胃,一個(gè)乒乓球婶芭,都需要用同樣大小的盒子來(lái)單獨(dú)存放,那規(guī)格自然只能按最大的來(lái)算着饥,當(dāng)你往那個(gè)大盒子里放一個(gè)乒乓球的時(shí)候犀农,不覺(jué)得很浪費(fèi)空間嗎。所以為了避免這樣不必要的浪費(fèi)宰掉,設(shè)計(jì)多種整數(shù)型是有必要的呵哨。當(dāng)然,也沒(méi)有必要對(duì)于內(nèi)存太過(guò)斤斤計(jì)較轨奄,如果不是在搞算法研究孟害,不是對(duì)時(shí)間跟空間效率要求很苛刻的條件下,基本上都用int型就好了挪拟。畢竟一般情況挨务,運(yùn)行效果比運(yùn)行效率更重要。
??接下來(lái)說(shuō)浮點(diǎn)類(lèi)型玉组,為什么叫浮點(diǎn)類(lèi)型谎柄,自然是用來(lái)表示浮點(diǎn)數(shù)的(廢話(huà)),那什么是浮點(diǎn)數(shù)惯雳,這朝巫。說(shuō)來(lái)又要有一段文章了。在計(jì)算機(jī)中石景,表示小數(shù)有兩種方法劈猿,一種叫定點(diǎn),一種叫浮點(diǎn)鸵钝。 ](http://upload-images.jianshu.io/upload_images/12129539-29425722cff526de.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
??以32位程序?yàn)槔诰剩c(diǎn)的意思是,小數(shù)點(diǎn)固定在 32 位中的某個(gè)位置恩商,前面的是整數(shù)变逃,后面的是小數(shù)。小數(shù)點(diǎn)具體固定在哪里怠堪,可以自己在程序中指定揽乱。例如上面的例子名眉,小數(shù)點(diǎn)在 23 bit 處。無(wú)論你是124.25凰棉,是0.5损拢, 還是100, 小數(shù)點(diǎn)都在 23 bit 的位置固定不變撒犀。
??最高的 1 位是符號(hào)位 s,接著的 8 位是指數(shù)E或舞,剩下的 23 位為有效數(shù)字 M荆姆。例如:
5 DEC = 101 BIN = 1.01 x 2^2
100 DEC = 01100100 BIN = 1.100100 x 2^6
0.125 DEC = 0.001 BIN = 1 x 2^-3
??現(xiàn)在,小數(shù)點(diǎn)的位置就漂浮不定了映凳。如果想了解關(guān)于浮點(diǎn)數(shù)的存儲(chǔ)問(wèn)題胆筒,可以看看這篇文章,https://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html
诈豌,當(dāng)然仆救,新手的話(huà)建議先別看了,免得被嚇跑了矫渔,你只需要知道彤蔽,浮點(diǎn)型就是用來(lái)存取帶小數(shù)點(diǎn)的數(shù)就可以了。
??浮點(diǎn)數(shù)也分成兩個(gè)類(lèi)型蚌斩,float和double铆惑,float占用四個(gè)字節(jié),取值范圍為-2^128 ~ +2^128送膳,也即-3.40E+38 ~ +3.40E+38员魏;double占用八個(gè)字節(jié),取值范圍為-2^1024 ~ +2^1024叠聋,也即-1.79E+308 ~ +1.79E+308撕阎。
float:2^23 = 8388608,一共七位碌补,這意味著最多能有7位有效數(shù)字虏束,但絕對(duì)能保證的為6位,也即float的精度為6~7位有效數(shù)字厦章;
double:2^52 = 4503599627370496镇匀,一共16位,同理袜啃,double的精度為15~16位汗侵。
??你如果對(duì)于這兩個(gè)類(lèi)型傻傻分不清楚,那就只用double類(lèi)型就好了,java里最常用的浮點(diǎn)類(lèi)型就是double類(lèi)型晰韵。
??扯的有點(diǎn)多了发乔,布爾型都等不及了,別擔(dān)心雪猪,布爾型(boolean)是最簡(jiǎn)單的栏尚,只有真(true)跟假(false)兩種狀態(tài)。
??最后就是字符型(char)只恨,用于存放字符的數(shù)據(jù)類(lèi)型译仗,占用2個(gè)字節(jié),采用unicode編碼官觅,它的前128字節(jié)編碼與ASCII兼容字符的存儲(chǔ)范圍在\u0000~\uFFFF古劲,在定義字符型的數(shù)據(jù)時(shí)候要注意加' ',比如 '1'表示字符'1'而不是數(shù)值1缰猴。
??好了,基本數(shù)據(jù)類(lèi)型就介紹這么多了疤剑,總的來(lái)說(shuō)滑绒,整型用來(lái)存放整數(shù),浮點(diǎn)型用來(lái)存放小數(shù)隘膘,布爾型用來(lái)存放真假疑故,主要用于邏輯判斷,字符型用來(lái)存放單個(gè)字符弯菊,比如:'a','b','c'等等纵势。Java中整數(shù)默認(rèn)為int型,小數(shù)默認(rèn)為double型管钳。
??最后再說(shuō)一點(diǎn)钦铁,不同數(shù)據(jù)類(lèi)型之間也是可以相互轉(zhuǎn)換的。Java中也是有著弱肉強(qiáng)食的規(guī)則才漆,誰(shuí)占地多誰(shuí)就大牛曹,一個(gè)整數(shù)型int跟一個(gè)浮點(diǎn)型double一起運(yùn)算時(shí),會(huì)自動(dòng)轉(zhuǎn)化為double型醇滥,這樣就能無(wú)精度損失的進(jìn)行數(shù)值運(yùn)算了黎比。下面是數(shù)據(jù)類(lèi)型之間的合法轉(zhuǎn)換:
??那我非要進(jìn)行“非法轉(zhuǎn)換”怎么辦,一個(gè)占用8字節(jié)的double型非要轉(zhuǎn)換成占用4字節(jié)的int型該怎么辦鸳玩,那就只能用強(qiáng)制類(lèi)型轉(zhuǎn)換了阅虫,但這樣可能會(huì)造成精度的丟失。具體情況暫時(shí)不多做介紹了不跟,不然又要說(shuō)半天才能說(shuō)的完了颓帝。
??好了,今天的內(nèi)容到此結(jié)束,基本數(shù)據(jù)類(lèi)型都看了個(gè)遍躲履,如果還是有些不明白见间,也沒(méi)有關(guān)系,一回生二回熟嘛工猜。來(lái)日方長(zhǎng)米诉,日后再說(shuō)吧。(溜了溜了)