Java中九種基本資料型別以及他們的封裝類
Java有兩種有效的資料型別
- 原始資料型別
- 引用資料型別
原始資料型別
Java支援8種原始資料型別。
位元組型(byte)
- 位元組型是一種8位的有正負的二進位制整數
- 最小值是-128 (-2^7)
- 最大值是127(2^7 - 1)
- 預設值是0
- 位元組型別主要是為了在計算機記憶體中節省空間,位元組型比整數型小了4倍
- 包裝類 java.lang.Byte
短數型(short)
- 短數型是16位有正負的二進位制整數
- 最小值是-32768(-2^15)
- 最大值是32767(2^15 - 1)
- 短數型也是為了節省記憶體空間,短數型比整數小2倍
- 預設值0
- 包裝類java.lang.Short
整數型(int)
- 整數型是一種32位的有正負的二進位制數
- 最小值是 - 2,147,483,648(-2^31)
- 最大值是 2,147,483,647(2^31 -1)
- 預設值是0
- 一般被應用於整數值,一般都夠用
- 包裝類java.lang.Integer
長整型(long)
- 長整型是一種64位的有正負的二進位制數
- 最小值是 -9,223,372,036,854,775,808(-2^63)
- 最大值是 9,223,372,036,854,775,807 (2^63 -1)
- 這種資料型別一般使用在比整數範圍更大的應用中
- 預設值是0L
- 包裝類是java.lang.Long
浮點型(float)
- 浮點型是一種單精度的32位IEEE754標準下的浮點資料
- 主要是為了在大型浮點陣列中節省資料
- 預設值是0.0f
- 浮點型不能用於貨幣等類似的精確資料中
- 包裝類是java.lang.Float
雙精度型(double)
- 雙精度型是一種雙精度哦4位的IEEE754標準下的浮點資料
- 雙精度一般被用於預設是小數的值
- 一般不能使用者貨幣等精確資料中
- 預設值是0.0d
- 包裝類是java.lang.Double
布林型(boolean)
- 布林型資料代表一種資訊位元
- 布林型只有兩種資料表現:真(true) 和假(false)
- 一般使用者判斷語句
- 布林型預設是false
- 包裝類是:java.lang.Boolean
字元型(char)
- 字元型資料是簡單的 16 位 Unicode 標準下的字元
- 最小值是: ‘\u0000’ (或 0)
- 最大值是: ‘\uffff’ (或 65,535 )
- 字元型資料可以用來儲存任意字母
- 包裝類:java.lang.Character
引用資料型別
- 引用資料型別是由類的編輯器定義的,他們是用於訪問物件的。這些變數被定義為不可更改的特定型別
- 例如:Employee, Puppy 等等
- 類物件和陣列變數就是這種引用資料型別
- 任何引用資料型別的預設值都為空
- 一個引用資料型別可以被用於任何宣告型別和相容型別的物件
java還存在一種資料型別void,包裝類是java.lang.Void,因為無法對它進行直接操作,所以不再描述。
基本資料型別在虛擬機器中可以喝它們的包裝類直接裝換,速度很快,所以我們在賦值、傳值的時候可以像使用基本資料型別一樣使用它們的包裝類,但是不代表基本資料型別可以呼叫包裝類的方法,因為基本資料型別都是final修飾的,所以不能繼承擴充套件新的類,也無法重新新的方法。
說說基本資料型別和它們的包裝類有何區別
int 是基本型別,直接存數值
Integer是類,產生物件時用一個引用指向這個物件
Java把記憶體劃分成兩種:一種是棧記憶體,另一種是堆記憶體
在函式中定義的一些基本型別的變數和物件的引用變數都是在函式的棧記憶體中分配
而實際的物件是在儲存堆記憶體中
即
int i = 5;//直接在棧中分配空間
Integer i = new Integr(5);//物件是在堆記憶體中,而i(引用變數)是在棧記憶體中
在堆中分配的記憶體,由java虛擬機器的自動垃圾回收器來管理.
因為在堆中分配空間所需的時間遠大於從棧中分配儲存空間,所以JAVA速度比C 慢
當需要往ArrayList,HashMap中放東西時,像int,double這種基本型別是放不進去的,因為容器都是裝object的,這是就需要這些基本型別的外覆類了。Java中每種基本型別都有相應的外覆類。
int 和 Integer 的區別
java 提供兩種不同的型別:引用型別(或者封裝型別,Warpper)和原始型別(或內建型別,Primitive)。Int是java的原始資料型別,Integer是java為int提供的封裝類。Java為每個原始型別提供了封裝類。
原始型別 封裝類
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
引用型別和原始型別的行為完全不同,並且它們具有不同的語義。引用型別和原始型別具有不同的特徵和用法,它們包括:大小和速度問題,這種型別以哪種型別的 資料結構儲存,當引用型別和原始型別用作某個類的例項資料時所指定的預設值。物件引用例項變數的預設值為 null,而原始型別例項變數的預設值與它們的型別有關。
int 是基本型別,(int)(Math.Random()*100)就是一個數,可以進行加見乘除。 Integer是class ,那麼 new Integer(temp)就是一個物件了,可以用到Integer這個class的方法,例如用intvalue()可以返回這個int的值。