【JAVA零基礎入門系列】Day3 Java基本數據類型
前兩篇已經將開發環境搭建完成,如果你已經按之前的教程按部就班的完成了部署,那麽世界上最優秀的編程語言之一和世界上最優秀的IDE之一已經出現在你的電腦上(此處應有掌聲),如果你還沒入門,或者正在臺階上踱步,可能你還不能理解這個“最優秀”的含義,沒有關系,這頓美味需要我們來細嚼慢咽才能品嘗到它的獨特之處。
接下來,就讓我們一起來正式揭開Java的面紗。
Java是一門簡單、面向對象、高性能、安全性高、健壯性強、移植性好的語言(一本正經的胡說八道中)。Java的語法跟C++很像,如果有過C++學習經驗的人,學習Java上手會容易很多,Java一開始很多特性都跟C++相同,比如基本的程序結構、類、語法規則等等,但是刪除了其中很多復雜的東西,比如頭文件,結構,聯合,操作符重載、虛基類等等,看到這裏,學過C++的你可能會覺得很高興,終於不用跟那些奇奇怪怪的東西打交道了。別高興的太早,因為,還有讓你更高興的(手動滑稽),那最頭疼的指針操作部分,也去掉了,可以說是一個純凈簡化版的C++,但也添加了很多自己的特性,沒有了多重繼承,取而代之的是接口和內部類,由於不允許直接操作指針,所以就不會因為對指針的一頓瞎操作而出現神奇的bug,當然,也少了很多尋找bug的樂趣(尷尬),Java在安全性能上是可以信任的,因為永遠不會存取一個壞的指針,而造成內存分配的錯誤,也不存在內存泄漏問題。所有那些因為指針引起的安全隱患,都不存在的。
也許說了這麽多,對於新手的你,看的雲裏霧裏,不知所雲,沒關系,你只需要知道,Java上手並不難,只比繞操場跑上十來圈難那麽一點點,但如果你只是想來散散步的話,那你可能沒有機會享受到汗流浹背後的滿足感了。
言歸正傳,Java可以寫桌面、可以寫Android、可以寫服務器、可以寫企業級業務、可以寫互聯網業務。如果你以後想在安卓開發、服務器開發、網站後臺開發和維護上有所發展,那Java將是你不錯的選擇。如果只是想來膜拜一下這門常年位居編程開發語言排行榜榜首的語言,那也可以來看看,俗話說的好,技多不壓身嘛,以後見了不會編程的朋友,還可以裝個X說我也是學過Java的人(憋笑)。
簡單介紹了Java的功能後,能堅持看到這說明你已經有點小心動,想要繼續學下去,那就跟我一起來進行系統的學習吧。
要學習Java,自然要從基本的數據類型說起,那麽,什麽是數據類型?顧名思義嘛,就是不同的數據有不同的類型,就像人按性別分男女,按年齡分老中少,按性情分攻受(咳咳,這裏只是為了舉個栗子),在java裏,基本的數據類型有四種,整數型,浮點型,布爾型和字符型。下面來一一介紹。
整型,自然就是用來存放整數的, 比如說:1,2,3,4,100,等等,一般的整數都可以用int型來存放和操作,整型還可以根據取值範圍需求不同再細分成int型,short型,long型,byte型,這幾個兄弟排個序,從大到小分別是long、int、short、byte。long型最大,占用8個字節(在java中,討論最小的存儲單元是bit,也就是位,byte是字節,跟位的換算是:1byte=8bit,1kb=1024bytes=2^10bytes),作為整型中的老大,占用8*8=64位,所以除去第一位用於儲存符號位,其它63位可以用來表示數值大小,所以它的表示範圍為:-2^63 — 2^63-1。大概是百億億的級別,所以要是用來存放你的銀行卡余額的話,還是不要勞煩long型了(滑稽)。作為最常用的整數型老二,int型可謂是人盡皆知,幾乎成了整型的代表人物,它只占用4個字節,取值範圍為-2^31 — 2^31-1,比21億稍微多一點。而老三short,顧名思義,比較“短”,不能跟18cm的long型相提並論,只占用2個字節,表示範圍為-2^15 -- 2^15-1,也就是-32768 -- 32767,做小範圍的加減乘除的話是夠用的。最後介紹的老四,byte型,只占用一個字節,可謂是相當拮據,表示範圍為 -128-127。所以存余額的話,byte,short型太短,long型太長,所以用int型最經濟實惠。
初學編程的人可能會問了,好好的整數型,還分那麽細幹嘛。這你就不懂了吧,舉個栗子,因為用於存放數據的內存空間是以位為基本單位,可以理解為很多很多相同的小盒子,相同的數據類型需要用同樣大小的空間,不然程序就不知道數據的開始和結束位置,用數據頭部來存放大小長度信息顯然有些浪費空間,那麽現在的問題是,一個整數,用多大的空間合適?你可能會覺得,都用同樣大小的空間不就好了,那都用8個字節來存儲,用來存放大數值的時候很好用,但是用來存放你的年齡的時候,仿佛浪費的空間就有點多了,就好比現在你有一個籃球,一個網球,一個足球,一個乒乓球,都需要用同樣大小的盒子來單獨存放,那規格自然只能按最大的來算,當你往那個大盒子裏放一個乒乓球的時候,不覺得很浪費空間嗎。所以為了避免這樣不必要的浪費,設計多種整數型是有必要的。當然,也沒有必要對於內存太過斤斤計較,如果不是在搞算法研究,不是對時間跟空間效率要求很苛刻的條件下,基本上都用int型就好了。畢竟一般情況,運行效果比運行效率更重要。
接下來說浮點類型,為什麽叫浮點類型,自然是用來表示浮點數的(廢話),那什麽是浮點數,這。說來又要有一段文章了。在計算機中,表示小數有兩種方法,一種叫定點,一種叫浮點。
以32位程序為例,定點的意思是,小數點固定在 32 位中的某個位置,前面的是整數,後面的是小數。小數點具體固定在哪裏,可以自己在程序中指定。例如上面的例子,小數點在 23 bit 處。無論你是124.25,是0.5, 還是100, 小數點都在 23 bit 的位置固定不變。
浮點數是相對定點數而言的,浮點數的表示方法為:最高的 1 位是符號位 s,接著的 8 位是指數E,剩下的 23 位為有效數字 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
現在,小數點的位置就漂浮不定了。如果想了解關於浮點數的存儲問題,可以看看這篇文章,https://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html
,當然,新手的話建議先別看了,免得被嚇跑了,你只需要知道,浮點型就是用來存取帶小數點的數就可以了。
浮點數也分成兩個類型,float和double,float占用四個字節,取值範圍為-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double占用八個字節,取值範圍為-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
你如果對於這兩個類型傻傻分不清楚,那就只用double類型就好了,java裏最常用的浮點類型就是double類型。
扯的有點多了,布爾型都等不及了,別擔心,布爾型(boolean)是最簡單的,只有真(true)跟假(false)兩種狀態。
最後就是字符型(char),用於存放字符的數據類型,占用2個字節,采用unicode編碼,它的前128字節編碼與ASCII兼容字符的存儲範圍在\u0000~\uFFFF,在定義字符型的數據時候要註意加‘ ‘,比如 ‘1‘表示字符‘1‘而不是數值1。
好了,基本數據類型就介紹這麽多了,總的來說,整型用來存放整數,浮點型用來存放小數,布爾型用來存放真假,主要用於邏輯判斷,字符型用來存放單個字符,比如:‘a‘,‘b‘,‘c‘等等。Java中整數默認為int型,小數默認為double型。
最後再說一點,不同數據類型之間也是可以相互轉換的。Java中也是有著弱肉強食的規則,誰占地多誰就大,一個整數型int跟一個浮點型double一起運算時,會自動轉化為double型,這樣就能無精度損失的進行數值運算了。下面是數據類型之間的合法轉換:
那我非要進行“非法轉換”怎麽辦,一個占用8字節的double型非要轉換成占用4字節的int型該怎麽辦,那就只能用強制類型轉換了,但這樣可能會造成精度的丟失。具體情況暫時不多做介紹了,不然又要說半天才能說的完了。
好了,今天的內容到此結束,基本數據類型都看了個遍,如果還是有些不明白,也沒有關系,一回生二回熟嘛。來日方長,日後再說吧。(溜了溜了)
【JAVA零基礎入門系列】Day3 Java基本數據類型