Java 得資料型別可分為,Primitive Type (基本資料型別)及Reference Type(參考資料類別)

首先要了解 一般在記憶體中得儲存位置及方式。

12      

Global

  負責存取static的類別成員變數,因此被放置在Global,不會因建立出一個新的物件,而配置一個新的類別成員供該物件存取。因此此處存放著,不希望被丟棄的類別物件

 

Stack

  存放在JAVA程式中宣告的基本資料型別 及 參考內容值(object reference variable),當宣告產生時,Stack將有指標直接指向該變數,所以在存取該變數資料內容時的處理速度比較快。

 

Heap

  存放參考資料型別的物件實體

 

  

宣告基本型態資料型別是在記憶體中的Strack中直接放入變數內容 (如下圖)

14  

 

基本資料型別可分為四大類

1.字元(char)

2.整數(byte、short、int及long)

3.浮點數(float及double)

4.布林值(boolean)

 

 

資料類別

資料型態

位元組數(bytes)

位元數(bits)

資料範圍 (Range)

初始值

字元

char (Unicode)

2

16

‘\u0000’ ~ ‘\uFFFF

0 ~ 65535

‘\u0000’

整數

byte

1

8

-128 ~ 127

0

short

2

16

-32,768 ~ 32767

0

int

4

32

-231次方 ~ 231次方-1

0

long

8

64

-263次方 ~ 263次方-1

0L

浮點數

float

4

32

-3.4E+38 ~ 3.4E+38

0.0F

double

8

64

-1.7E+308 ~ 1.7E+308

0.0D

布林值

boolean

1

8

只能有 true false

false

 

初始值:
§類別變數與物件變數若宣告為基本資料型別,系統會給定初始值,區域變數則不會給定。
literal 宣告:
§整數的預設資料型別是 int浮點數預設的資料別是 double
§在程式碼中直接 hard-coded 10
                         
^^^ int
§在程式碼中直接 hard-coded 10.0
                          ^^^^^ double

 

基本資料型別的資料轉換

Java中有兩種轉換方式,一種是Implicit Casting(隱式轉換) 、一種是Explicit Casting(強行轉換)兩種。

隱式轉換

§小轉大,無風險。
§以較小的資料型別轉成較大的資料型別,例如:將 16 bit 的資料放到 32 bit 的資料中。
§系統會根據程式的需要自動且適時地做轉型。
 

 

強行轉換

§大轉小,風險大。
§以較大的資料型別切割成較小的資料型別,例如:將 32 bit 的資料放到 16 bit 的資料中。
§必須在程式中給予明確的指令,系統並不自動轉型。 
 
 
隱式與強行式的轉換範例:
    n假設:int  i = 1;    double d;    float f;
    nd  =  i;
    §i變數的內容值指派給 d合法,Implicit Casting
    ni  =  d;
    §d變數的內容值指派給 i不合法,程式需要作 Explicit Casting。如i = (int)d;
    nf  =  2.5;
    §2.5 指派給 f不合法,在 Java 語言中 literal 浮點數預設的資料型別是 double,所以必須改寫成
   •f = (float)2.5; f = 2.5f; 
 
基本資料型別中的強制轉換機制,原則上就是切割資料。
§例如:byte b = (byte)257;
§答案:b = 1
 
byte b = (byte)257;

257 int資料型別,位元組數是 32 bits 

經過(byte)強制型別轉換後會切掉前 24 bits 留下剩餘的 8 bits,因為 byte 的資料型別內容長度是 8 bits ,因此值也會只剩下1。

 

.... 0001 0000 0001

28中的1 會被刪除

 

 

 

Java 語言中的參考資料型別有哪些?

 

Java 語言中基本資料型別以外的資料型別都是參考資料型別(reference type)

 

§charbyteshortintlongfloatdouble boolean。 

 

 

參考資料型別在記憶體中的存放位置。

 

假設宣告並建立一個 String

 

§String s = new String(Java);
15  

 

 

 

 

 

 

arrow
arrow

    豆港 發表在 痞客邦 留言(0) 人氣()