Java是強類型語言,每個變量都必須有它的數據類型,而且變量之間不能隨便轉換數據類型python
主流的語言大多都是強類型 C、C++、Java、python程序員
弱類型語言數組
PHPspa
什麼是數據類型?code
- 數據類型,表示的是一個數據集合和基於該數據集合的一組合法操做
數據類型怎麼分類?接口
- 基本數據類型:JDK默認提供
- 引用數據類型
- 類
- 接口
- ....
基本數據類型(base date type)
有哪些基本數據類型?內存
四類八種ci
- 整型
- byte:字節型,佔1個字節空間
- short:短整型,佔2個字節空間
- int:整型,佔4個字節空間
- long:長整型,佔8個字節空間
- 浮點型
- float:單精度浮點型,佔4個字節
- double:雙精度浮點型,佔8個字節
- 字符類型
- char:佔4個字節,表示單個字符
- 布爾類型
- boolean:具體佔多少內存,瞭解便可
- 根據JVM規範,在內存中boolean看成int處理,佔4個字節
- boolean數組當成byte數組處理,一個boolean元素佔1個字節
- boolean:具體佔多少內存,瞭解便可
基本數值類型的取值範圍
基本數據類型 | 字節長度 | 大小(位) | 最小值 | 最大值 | 取值範圍 |
---|---|---|---|---|---|
byte | 1字節 | 8bit | -2^7 | 2^7-1 | -128 ~ 127 |
short | 2字節 | 16bit | -2^15 | 2^15-1 | -32768 ~ 32767 |
int | 4字節 | 32bit | -2^31 | 2^31-1 | -2147483648 ~ 2147483647(21億出頭) |
long | 8字節 | 64bit | -2^63 | 2^63-1 | -9223372036854774808 ~ 9223372036854774807(大概922億億) |
float | 4字節 | 32bit | - | - | -3.403E383.404E38(有效位數67位) |
double | 8字節 | 64bit | - | - | -1.798E308~1.798E308(有效數字15位) |
引用數據類型(reference)
礙於知識點的限制,目前只要知道字符串(String)是一種引用數據類型便可字符串
String屬於引用數據類型中的類it
基本數據類型的數據類型轉換(conversion)
什麼是數據類型轉換呢?
- Java是強類型語言,變量一旦聲明後,數據類型不會輕易改變,但也並不是徹底不可能改變
- 咱們將Java中變量的數據類型由某一種轉換爲另外一種,這個過程叫作數據類型轉換
數據類型轉換的分類
- 自動類型轉換,也叫向上轉型
- 強制類型轉換,也叫向下轉型
基本數據類型的自動類型轉換(automatic)
什麼是自動類型轉換?
- 數據類型無需程序員操做,由系統自動轉換
基本數據類型的自動類型轉換的規則
- byte、short、char之間不互相轉換,一旦之間發生運算,一概自動轉換爲int進行運算,結果是int
- byte、short、char任一數據類型與int進行計算,一概自動轉換爲int進行計算,結果是int
- byte、short、char、int任一數據類型與long進行計算,一概自動轉換爲long進行計算,結果是long
- byte、short、char、int、long任一數據類型與float進行計算,一概自動轉換爲float進行計算,結果是float
- byte、short、char、int、long、float任一數據類型與double進行計算,一概自動轉換爲double進行計算,結果是double
精度問題
-
當大變小時,有可能會出現新的數據類型沒法容納所有的數據,致使部分信息被截斷丟失,數據失真
- 這種現象,有一個專業名詞叫」精度損失「
-
當int、long(4字節,8字節)自動轉換成float(4字節)時,可能會由精度損失
-
當long自動轉換成double(8字節)時,也可能產生精度損失
基本數據類型的強制類型轉換(cast)
什麼是強制類型轉換
- 數據類型的轉換須要程序員顯式操做,不然報錯
何時須要強制類型轉換
- 在特別有必要的狀況下,把一個佔內存大的數據類型,轉換成小的數據類型,好比int---->byte
語法
目標數據類型 變量名 = (目標數據類型)(被轉換的變量變量名);
精度問題
- 強制類型轉換,大變小,精度損失是很常見的
- 強烈建議,若是不是不進行強制類型轉換,程序就GG,不要使用強制類型轉換,稍有不慎會致使bug
- 進行強制類型轉換,要嚴格考量,數據類型的取值範圍,像(byte)200這種行爲是很滑稽的
補充
- boolean類型和其餘數據類型之間不能經過強制類型轉換語法直接轉換