Java筆記第六篇 資料類型初瞭解(上),java第六篇
#日常嘮叨1#最近小區老是停電,讓我懷疑人生。從今天開始應該可以回到之前的節奏
#日常嘮叨2#上一篇部落格寫過了,從今天起兩天又來理論了,大家穩住,兩天之後就有代碼
方便編程的工具有了,現在我們萬事具備,可以開始深入Java了。
我們要接觸的第一個概念,是資料類型。什麼是資料類型呢?就是資料的類型唄(說了和白說一樣)。那資料是啥?從電腦科學的角度來說,資料就是資訊,我們的電腦是圍繞這個資訊,也就是資料展開的。我不舉其他角度的例子了,說太多怕你們繞。也就是,資料即是我們程式的核心,沒有資料就沒有程式。
為了區分幾個資料之中的不同,出現了資料類型這個概念。有了資料類型,程式就可以轉管專治,針對不同資料類型的資料進行不同的處理。
在Java中,資料類型分為基礎資料型別 (Elementary Data Type)和引用資料類型。基礎資料型別 (Elementary Data Type)分為整型(整數型)、浮點型(小數型)、字元型、布爾型,引用資料類型分為類、介面、枚舉、數組。
引用資料類型不是我們的重點,關於引用資料類型我們後面會細寫。這裡我們只要關注一下基礎資料型別 (Elementary Data Type)。
首先我們說說整型,整型是資料內容為整數的資料的類型。整型又分為4種類型,分別是byte、short、int、long(大型程式設計語言就是這麼麻煩)。這些不同的4種類型都可以用來表示整數資料,但是它們有表數範圍的區別(即,佔用儲存空間的區別),下面這張表是各個類型的佔用儲存空間的大小和表數範圍:
| 資料類型 |
佔用儲存空間 |
表數範圍 |
| byte |
1位元組 |
-128~127 |
| short |
2位元組 |
-32768~32767 |
| int |
4位元組 |
-2147483648~2147483647 |
| long |
8位元組 |
-263~(263-1) |
為啥表數範圍的正數全部比負數小一?因為還有一個0呢。通常情況下,我們都使用int類型作為整型的預設類型,雖然有時我們不需要這麼大的表數範圍。Java內建也贊同了這一點,於是將整型的預設類型設定為了int(也就是說,我在Java中隨便打一個整數,這個整數就是int類型),但是如果我們要用其他類型怎麼辦?如果要用byte和short,沒有任何關係,因為int可以直接向下轉型為byte和short(關於轉型這件事,我們後面會寫),但是如果用long類型呢?那就需要使用尾標,通過在整數後面增加一個L來實現(注意:這裡不要用小寫L,因為小寫L很像數字1和字母i的大寫,關於L問題我們後面會寫)。比如 123 是一個int類型的資料, 123L 則是一個long類型的資料。
有些人要問了,我要用整型來表示一個比(263-1)還要大的數怎麼辦?Java中提供了一個叫做BigInteger的類,它可以表示比long更大的整數,但這是後話了(BigInteger類在後面會寫)。
在Java中,整數可以用4種進位來表達,分別是2進位、8進位、10進位、16進位。通過在整數前面加上0b(或ob),即證明你打的數是2進位整數,8進位在前面加0,10進位啥也不用,16進位在前面加0x或ox。
說完整型,現在我們來聊聊另一個用來表示數位類型——浮點型,浮點型是資料內容為小數的資料的類型。浮點型還好,只分成兩種類型,float和double。他們的區別和整型一樣,只是表數範圍(佔用儲存空間)大小不一樣而已:
| 資料類型 |
佔用儲存空間 |
表數範圍 |
| float |
4位元組 |
-3.403e38~3.403e38 |
| double |
8位元組 |
-1.798e308~1.798e308 |
學過數學的應該知道,小數點後面是可以寫無限位的,所以浮點型只是進行一次粗略的估算,會出現誤差。float類型尾數只能精確到的7位有效數字,被稱為單精確度小數。而double類型的精度說float的兩倍,所以又叫雙精確度小數(double英文的本意就是雙倍,不知道大家有沒有聽說過這個詞:double kill)。Java浮點型預設為double類型,如果要用float需要在後面加上尾標f或者F(個人推薦用大寫F),比如3.14是double類型,而3.14F是float類型(這邊插一句,在小數後面加上d或D可以表示小數為double類型,雖然沒有意義,但是要知道)。
小數是如此不精確,所以我們要避免使用小數,如果真的要進行嚴格的小數運算,可以使用BigDecimal類(同樣這個後面會寫)。
Java中的小數有兩種表示方法,一種是正常小數,一種是科學計數法小數。都直接打就行,不用寫特殊標註。關於科學計數法大家應該知道,比如3.14e2就是3.14×102=314,3.14e-2就是3.14×10-2=0.0314。