標籤:方法 單個字元 區別 資料類型 java div body 分配 強制類型轉換
Java資料類型分為基礎資料型別 (Elementary Data Type)與引用資料類型。
1 基礎資料型別 (Elementary Data Type)
byte:Java中最小的資料類型,在記憶體中佔1個位元組(8 bit),取值範圍-128~127,預設值0
short:短整型,2個位元組(16 bit),取值範圍-32768~32717,預設值0
int:整型,用於儲存整數,在記憶體中佔4個位元組,取值範圍-2147483648~2147483647,預設值0
long:長整型,在記憶體中佔8個位元組-2^63~2^63-1,預設值0L
float:浮點型,在記憶體中佔4個位元組,用於儲存帶小數點的數字(與double的區別在於float類型有效小數點只有6~7位),預設值0
double:雙精確度浮點型,用於儲存帶有小數點的數字,在記憶體中佔8個位元組,預設值0
char:字元型,用於儲存單個字元,記憶體中佔2個位元組,取值範圍0~65535,預設值為空白
boolean:布爾類型,佔1個位元組,用於判斷真或假(僅有兩個值,即true、false),預設值false
2 參考型別
Java語言本身不支援C++中的結構(struct)或聯合(union)資料類型,它的複合資料型別一般都是通過類或介面進行構造,類提供了捆綁資料和方法的方式,同時可以針對程式外部進行資訊隱藏。參考型別分3種:類,介面,數組;
類(Class):所有的類,無論是Java自身已經存在的,還是使用者後來建立的;
Objec類:它是所有類的父類,每個類都實現這個類的方法;用Object 可以定義所有的類;
String:String類代表字串,Java
介面(interface): 系統內建或者使用者建立的
數組(array): 系統內建或者使用者建立的
3 Java中的資料類型在記憶體的儲存原理
(1) 基礎資料型別 (Elementary Data Type)的儲存原理:所有的單一資料型別不存在“引用”的概念,基礎資料型別 (Elementary Data Type)都是直接儲存在記憶體中的記憶體棧上的,資料本身的值就是儲存在棧空間裡面,Java語言裡面八種資料類型是這種儲存模型;
(2) 參考型別的儲存原理:參考型別繼承於Object類(也是參考型別)都是按照Java裡面儲存物件的記憶體模型來進行資料存放區的,使用Java記憶體堆和記憶體棧來進行這種類型的資料存放區,簡單地講,“引用”(儲存物件在記憶體堆上的地址)是儲存在有序的記憶體棧上的,而對象本身的值儲存在記憶體堆上的;
基礎資料型別 (Elementary Data Type)和參考型別的區別主要在於基礎資料型別 (Elementary Data Type)是分配在棧上的,而參考型別是分配在堆上的
舉例說明
我們分析一下 == 和equals()的區別
首先,定義兩個String 數組對象
String[] a={"latiny1","latiny2"};
String[] b={"latiny1","latiny2"};
然後比較
if(a==b)
{
System.out.println("a==b");
}
else
{
System.out.println("a!=b");
}
程式輸出a!=b
原因:a和b的地址是不相同的,a==b比較的是兩個變數的地址,資料a與b的地址不一樣
不論是基礎資料型別 (Elementary Data Type)還是參考型別,他們都會先在棧中分配一塊記憶體,對於基本類型來說,這塊地區包含的是基本類型的內容;而對於參考型別來說,這塊地區包含的是指向真正內容的指標,真正的內容被手動的分配在堆上。
4 基本類型轉換
(1)自動類型轉換
Java所有的數實值型別變數都可以互相轉換,如果系統把某種基本類型的值直接賦給另一種基本類型的變數,則這種方式被稱為自動類型轉換。
int e = 1;
double d =e;
以上代碼不會報錯,系統會自動轉換。
(2) 強制類型轉換
當把一個範圍大的數值或變數賦給另一個範圍小的變數時,需要進行強制轉換。
double d =1.5;
int e = d;
以上代碼會報錯,把大範圍的數值賦給小範圍的變數,需要強制轉換,這樣才能通過編譯,且大範圍的數值會丟失精度。
int e = (int) d;
Java 基礎資料型別 (Elementary Data Type)