Java資料類型,
一、首先大概瞭解一下關於資料的內容或要點。
1、程式在執行的過程中,需要對資料進行運算,也需要儲存資料。這些資料可以是由使用者輸入,也可以是從檔案中取得的,也可以是從網路中擷取的。
在程式啟動並執行過程中,這些資料通過變數儲存在記憶體中,以便程式隨時使用。
2、若需要找到儲存在記憶體中的資料,就需要將資料指定給變數,並命名,通過變數名(儲存資料的記憶體空間)來找到相關資料。
3、一個變數代表一個記憶體空間,資料就儲存在這個空間中,然而由於資料在儲存時需要的容量各不相同,不同的資料就必須要分配不同大小的記憶體空間來儲存,因此,對不同的資料用不同的資料類型來區分。
4、基礎資料型別 (Elementary Data Type)的資料所佔的記憶體空間是固定的,在記憶體儲存的是數值的本身,而引用資料類型存放的是指向該資料指向的地址,往往是由多種基礎資料型別 (Elementary Data Type)組成的,對引用資料類型的資料應用為對象的引用,所以也被稱為複合資料型別。
二、Java的資料類型可以基本地分為8種基礎資料型別 (Elementary Data Type)和引用資料類型。
| 資料類型 |
關鍵字 |
佔用位元組數 |
預設數值 |
取值範圍 |
| 邏輯型 |
boolean |
1 |
false |
true;false |
| 位元組型 |
byte |
1 |
0 |
-27~27-1 |
| 短整型 |
short |
2 |
0 |
-215~215-1 |
| 整型 |
int |
4 |
0 |
-231~231-1 |
| 長整型 |
long |
8 |
0L |
-263~263-1 |
| 單精確度浮點型 |
float |
4 |
0.0f |
負數範圍:-3.4028235E+38~-1.4E-45 正數範圍:1.4E-45~3.4028235E+38 |
| 雙精確度浮點型 |
double |
8 |
0.0d |
負數範圍:-1.7976931348623157E+380~-4.9E-324 正數範圍:4.9E-324~1.7976931348623157E+308 |
| 字元型 |
char |
2 |
'\u0000' |
'\u0000'~'\uffff' |
三、討論一下java中資料類型儲存的位置
基礎資料型別 (Elementary Data Type)儲存位置,取決於基本類型在哪聲明: 1.基礎資料型別 (Elementary Data Type)在方法中聲明時,其變數名和值都是儲存在java棧中的; 在方法中聲明基本類型資料: 例: int a = 10 ① 在棧中聲明一個變數名為a的引用; ② 在棧中尋找是否有字面值為10的地址,如果沒有就開闢一個存放字面值是10的地址; ③ 將變數名為a的引用指向字面值為10的地址; 2.基礎資料型別 (Elementary Data Type)在類中聲明時則是儲存在堆記憶體中的; ① 在類中聲明的基礎資料型別 (Elementary Data Type),在類載入時會儲存到方法區中; ② 在java堆中從產生代表這個類的java.lang.Class對象,作為方法區這些資料的訪問入口; ③ static 關鍵字修飾的資料是屬於類本身的,儲存在方法區中; ④ final 關鍵詞修飾的資料表示引用不變的,儲存在常量池中; 3.基礎資料型別 (Elementary Data Type)的封裝類: ① Integer i = 10; 同 i = 10 的聲明過程。 ② Integer i = new Integer(10); 資料10 是儲存在堆中的; 引用資料類型一定輸儲存在堆中的嗎? 1. 特殊的String類 例 : String str = “abc”; ① 在棧中聲明一個變數名為str的引用; ② 在常量池中尋找是否有“abc”的字串對象,如果沒有就在常量池中建立儲存一個值為“abc”的字串對象; ③ 將str的引用指向字串對象“abc”; ④ 當 再次聲明 String str1 = "abc",常量池中已經有“abc”對象,所以str1直接指向abc的地址; ⑤ str = str1,引用資料類型比較,比較的是應用的地址; 註: String str = “abc” 沒有建立或建立一個對象 2.其他參考型別 Stirng str = new String("abc"); ① 在棧中聲明一個變數名為str的引用; ② 在堆中建立儲存一個字串對象“abc”; ③ 檢查常量池中是否有字串對象“abc”,如果沒有就在常量池中建立儲存一個值為“abc”的字串對象; ④ 將堆中字串對象“abc”與常量池中字串對象“abc”聯絡起來,可以用intern方法返回常量池中的對象的引用; ④ 將str的引用指向堆中 字串對象“abc”; 註: String str = new String ("abc")建立一個或兩個對象;