原始資料型態-內置類型Primitive Data Types(或稱:基本數據類型 )
原始資料型態名稱全數小寫。
Java數據類型分為內置類型和擴展類型兩大類。
何謂內置類型和擴展類型,請至維基教科書查閱。
定義變數,常數
為何要定義(或稱:宣告)變數,常數?
是要告訴編譯器(Compiler)這個變數(變量)是屬於哪一種資料型態,這樣編譯器才知道需要配置多少空間給它,以及它能存放什麼樣的資料。
注意:
1.變數因作用域而存在記憶體Stack區段。
2.修飾為static靜態常數(或 變數):
在java虛擬機載入.class後,就一次性分配,存在記憶體Date Segment(資料段),位址無法變更,直到Application應用執行結束。
一次定義(宣告)多個同型態變數,範例如下:
資料型態 變數1 , 變數2, 變數3, ... ,變數N;
int dogAge , catAge , dogHeight , catHeight;
定義(宣告)變數與設定變數值
利用 = 這個設定運算子,就可以將 myHeight 變數,所佔的記憶體空間,存放168這個數值。
注意:1.變數需先定義,後賦值才能使用。2.同一方法體內之變數名相同時,只需要定義一次,後面即可賦值使用。
跳脫字元
跳脫字元(轉義字符)和所對應的意義:Java常用
除了上面所題的常數(常量)外,還有什麼叫常數呢?
答:
只定義原始資料型態的變數未賦值時,變數的值是多少?
答:注意:先定義變數是配置該型態的空間,之後須賦值才能使用,不然會出錯,訊息為:可能尚未起始設定區域變數
Java程式中定義的變數對 Random Access Memory 動態配置是如何呢?
答:
Java中資料型態差異之變數會佔用記憶體,記憶體分為三個部份來存放這些變數,如下說明:
Method Area(方法區)
Date Segment(資料段):
存放著被宣告為 static 靜態變數或常數與字符串常數。
是屬於這個(CLASS)類別的 static 靜態變數,並不會因為另外建立出一個新對象(物件)時,而配置一個新的類別 static 成員變數。
Code Segment(代碼段):
經由類加載器將xxx.class加載存放ByteCode的程式段,並從main方法開始執行。
並經由程序計數器記錄當前線程所執行到的位元(字節)碼的行號。
位元碼解釋器工作的時候就是通過改變這個計數器的值來選取下一條需要執行的位元碼指令。
Stack (台灣稱:堆疊,中共稱:棧):
區域(局部)變數、方法(函式)的參數與方法(函式)的位址等等,由系統管理,必須在編譯時期為已知。
是存放Java中宣告為基本資料型別(Primitive Type)變數的值。
或存放對象(物件)變數的參考地址值(object reference variable)。
當新的宣告產生時,stack 將有指標直接指向該變數,所以在存取該變數資料內容時的處理速度較快。
Heap (台灣稱:堆積,中共稱:堆):
堆為動態配置區,主要是用在編譯時期還不知道大小或個數的變數。
堆存放被宣告為參考(或稱:引用)資料型別(Reference Type),使用 new 產生的對象(物件)實體。
但該對象的參考內容值(object reference variable)是存放在 stack 中。
堆是Java Garbage Collection 垃圾收集器主要管理的區域,Java 自動管理對象的創建和銷毀,以得到更好的內存分配。
參考:
範例:
原始資料型態的使用觀念:
答:
原始資料型態的轉換:
原始資料型態的轉換,分 自動轉換 與 強制轉換 ,系統全部自動轉換就好了,幹嘛還要強制轉換....
答:大容量轉小容量,精度會喪失,所以要自負囉...哈哈...
範例:1
範例:2
範例:3