背景
最近被一個問題難倒:問到Java的基本數據類型有8種,具體是哪幾個?一起復習下:
Java數據類型概述
變量就是申請內存來存儲值,即當創建變量的時候,需要在內存中申請空間。
內存管理系統根據變量的類型為變量分配存儲空間,確定了變量的類型,即確定了數據需分配內存空間的大小,數據在內存的存儲方式。
Java兩大數據類型:內置數據類型/基本數據類型、引用數據類型
- 基本數據類型:都是直接存儲在內存中的內存棧上,數據本身的值就是存儲在棧空間;
- 引用數據類型:引用類型繼承與Object類,引用(即指針)是存儲在有序的內存棧上,而對象本身的值存儲在內存堆中。
內置數據類型/基本數據類型(8種)
- 整數型(4種):byte、short、int、long、
- 浮點型(2種):float、double
- 字符類型(1種):char
- 布爾類型(1種):boolean
具體如下:
類型 | 概述 | 范圍 | 默認值 | 作用 | 例子 |
---|---|---|---|---|---|
byte | 8位、有符號,以二進制補碼表示的整數 | -2^7 ~ (2^7-1),即 -128 ~ 127 | 0 | byte類型用在大型數組中節約空間,主要代替整數,因為byte變量占用的空間只有int的四分之一; | 例子:byte a=-2 |
short | 16位,有符號,以二進制補碼表示的整數 | -2^15 ~ 2^15-1, 即 -32768 ~ 32767 | 0 | short占用空間是int的二分之一 | 例子:short s=-20000 |
int | 32位、有符號,以二進制補碼表示的整數 | -2^31 ~ 2^31-1 | 0 | 一般整數型默認為int類型; | 例子:int=-200000 |
long | 64位、有符號,以二進制補碼表示的整數 | -2^63 ~ 2^63-1 | 0L | 主要使用在需要比較大整數的系統上 | 例子:long a=10000L |
float | 32位、單精度,浮點數 | 浮點數不能用於表示精確的值 | 0.0f | 在存儲大型浮點數組的時候可以節省內存空間 | 例子:float f1=0.3f |
double | 64位、雙精度,浮點數 | double也不能表示精確的值 | 0.0d | 浮點數的默認類型為double類型 | 例子:double d1=12.3 |
boolean | 表示一位的信息 | 取值:true/false | false | 只作為一種標志類記錄 true/false 情況 | 例子:boolean one=true |
char | 是一個單一的16位Unicode字符 | \u0000(即0)~\uffff(65,535) | '\u0000' | char可以存儲任何字符 | 例子:char letter='A' |
引用數據類型(3種)
- 引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時候被指定為一個特定的類型,聲明之后不能改變。
- 引用數據類型包括:類(對象)、接口、數組。
- 所有引用類型默認值都是null.
- 一個引用變量可以用於引用任何與之兼容的類型。