close
Java 的資料型態,分為兩大類,分別是:
  1. 基本資料型態 Primitive type
  2. 參考資料型態 Reference type
若都沒有定義任何資料型態,則為 Null Type,空型態。

宣告範例

public class var {
public static void main(String[] args) {
int Integerexample=1000;
double Doubleexample=10.014;
boolean Booleanexample=true;
char Characterexample='中';   
String Stringexample="字串測試";
 
System.out.printf("整數INT的值為:"+Integerexample+"\n");
System.out.printf("浮點數FLOAT的值為:"+Doubleexample+"\n");
System.out.printf("布林值BOOLEAN的值為:"+Booleanexample+"\n");
System.out.printf("字元CHAR的值為:"+Characterexample+"\n");
System.out.printf("字串String的值為:"+Stringexample+"\n");
}
 
}

結果

整數INT的值為:1000
浮點數FLOAT的值為:10.014
布林值BOOLEAN的值為:true
字元CHAR的值為:中
字串String的值為:字串測試
分類 資料型態  格式(所佔空間) 可儲存之值的範圍 範例
 整數 byte  8 bits -128 ~ 127        (二進制二補數)                                            預設值:0  byte byteV1 = 100;
short 16 bits -32768 ~ 32767                                                                         預設值:0  short shortV1 = 200;
int  ( Integer ) 32 bits -2147483648 ~ 2147483647                                                     預設值:0  int intV1 = 12345;
long 64 bits -9223372036854775808 ~ 9223372036854775807                 預設值:0L
建議修飾符: L 或 l  例: long longOne = 1234L;
 long longV1 = 1341441L;
 浮點數 float 32 bits 32 bit IEEE754 規格的浮點數。                                                 預設值:0F
範圍約在:-3.4028235E38 ~ 3.4028235E38
建議修飾符: F 或 f  例:float floatOne=0.3424F;
 float floatV1 = 2.3453F;
double 64 bits 64 bit IEEE754 規格的浮點數。                                                 預設值:0D
範圍約在:-1.7976931348623157E308 ~ 1.7976931348623157E308
建議修飾符: D 或 d  例:double doubleOne=3.3424D;
 double doubleV1 = 1.234D;
 字元

char

( Character )

16 bits 16 bit 的Unicode 字元,可容納各國的字元集。                        預設值:'\u0000' 
若以Unicode來看,就是'\u0000' 到 '\uffff'
若以整數值來看,範圍在0~65535,例如:65代表 'A'
請查閱:ASCII 字碼表
若以跳脫字元(轉義字符)'\'將後面的字符轉換成其它含意
 char chrA = '\101' , chrAc = '中'; 
 char chrU = '\u0041';
 char chrAd = 65;
 char chrAd = 'A';
 
  char br1 = '\n';  //換行符
布林  boolean 1 bits true 或 false。(不可用 0 或 1 或 其它 代表)                             預設值:false    boolean boolV1 = true;
定義變數,常數
為何要定義(或稱:宣告)變數,常數?
 是要告訴編譯器(Compiler)這個變數(變量)是屬於哪一種資料型態,這樣編譯器才知道需要配置多少空間給它,以及它能存放什麼樣的資料。
 標準語法  範例  說明
 資料型態   變數名稱; boolean var1;
int age;
定義了一個布林(boolean)型態的變數,變數的名稱為var1
定義了一個整數(int)型態的變數,變數的名稱為age
 資料型態   變數名稱 = 初始值; int age =10; 
boolean a = true,b = false;
char myChar = ‘\u0050’;
char myChar = ‘&’;
char myChar = 65;
double a = 0.0001;
float b = 0.1F;
宣告一個整數(int)型態的變數,並設定初始值為10。 
同時宣告多個布林(boolean)型態的變數,並設定初始值。
宣告一個字元(char)型態,初始值為Unicode碼格式。

宣告一個字元(char)型態,初始值為字元
宣告一個字元(char)型態,初始值為ASCII碼
宣告一個雙精數(double)型態的變數
宣告一個浮點數(float)型態的變數,必須在數值後加上符號「F」
 final 資料型態 數名稱 = ; final   int  MAX_VALUE = 10 定義常數  整數(int)型態  MAX_VALUE = 10。
常數值設定之後
不得更改常數名全大寫
 static 資料型態 變數名稱 = 初始值; static double number = 10; 使用static,定義靜態變數,建置於記憶體。相同變數名只有一份
 final static 資料型態 數名稱 = ; final static double PI = 3.14; 定義靜態常數建置於記憶體Date Segment(資料段) 且不得更改
常數名全大寫
注意:
    1.變數因作用域而存在記憶體Stack區段
    2.修飾為static靜態常數(或 變數):
       在java虛擬機載入.class後,就一次性分配,存在記憶體Date Segment(資料段),位址無法變更,直到Application應用執行結束

一次定義(宣告)多個同型態變數,範例如下:
 資料型態  變數1 , 變數2, 變數3, ... ,變數N;
 int dogAge , catAge , dogHeight , catHeight;
 
定義(宣告)變數與設定變數值
利用 = 這個設定運算子,就可以將 myHeight 變數,所佔的記憶體空間,存放168這個數值
 範例一  範例二  範例三
 int myHeight = 168 ; 
 
 int  myHeight = 168 , myWeight = 60; int  myHeight , myWeight;
myHeight = 168;
myWeight = 60;
應讀成:將168數值 設定給 整數型態的變數myHeight 直接定義變數與設定值 先定義變數,後設定值
注意:1.變數需先定義,後賦值才能使用。2.同一方法體內之變數名相同時,只需要定義一次,後面即可賦值使用
 
跳脫字元
跳脫字元(轉義字符)和所對應的意義:Java常用
轉義字符 意義 ASCII碼值(十進制) Unicode十六進制  十六進制
 \b  退格 (將當前位置移到前一格) 008  \u0008  \0x0008
 \t  水平定位符號TAB (跳到下一個TAB的位置) 009  \u0009   \0x0009
 \n  換行鍵 010  \u000A  \0x000A
 \f  換頁鍵 012  \u000C  \0x000C
 \r  Enter鍵 013  \u000D  \0x000D
 \"  代表一個雙引號 " 字符 034  \u0022  \0x0022
 \'  代表一個單引號 ' 字符 039  \u0027  \0x0027
 \\  代表一個斜線 \ 字符 092  \u005C   \0x005C
 注意:區分 斜線: /  與反斜線: \  ,此處不可互換 , 十六進制: \0x  或 \0X  (讀成: 反斜線 零 x)
 

https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8

印出資料類型大小、最小值和最大值語法:

資料類型.SIZE //印出資料類型大小
資料類型.MIN_VALUE //印出資料類型最小值
資料類型.MAX_VALUE //印出資料類型最大值

資料溢位 Overflow

若使用超過或小於該資料表示範圍,運算結果將會造成錯誤。
以 Byte 資料型態為例,範圍為 127 ~ -128,最大值為 127,最小值為 -128。
若資料存大於或小於,編譯器則會提示資料值已超過不符合該資料型態能處理的範圍錯誤。
以 byte 為例:
// 印出 byte 最小值、最大值
System.out.println("===byte===");   
System.out.println("Byte.SIZE= :" + Byte.SIZE);  
System.out.println("最小值:Byte.MIN_VALUE= " + Byte.MIN_VALUE);  
System.out.println("最大值:Byte.MAX_VALUE= " + Byte.MAX_VALUE);  

使用後缀字,來定義數字資料類型

十進制:123
長整數資料型態以大寫的 L 結尾:123L
16 進制以 0x 開頭:0x0F
8進制以0開頭
2 進制以0b 開頭:0b00001011
Doubles 默認寫法: 123.5, 123.5e10
Floats 使用小寫 f 或者大寫 F 後綴:123.5f

進階:參考資料型態 Reference type

簡單來說,只要不是上述的八種基本資料型態,其他都是是參考資料型態。參考資料型態預設資料值,皆為 null,所以若存取到沒有被實體畫的 null 的物件變數,就會出現 NullPointerException。
常見參考資料型態:
  • 物件 (object)
  • 字串 (String)
  • 自定義的類別 (class)
  • 陣列 (Array)
  • 介面 (interface)
  • 列舉 (enum)
基本與參考資料型態,兩者之間最大的不同,主要差異在記憶體配置的機制是不同的。程式執行期間,記憶體可分成三個部份:
  1. Global (全域):此區塊記憶體,主要用來存放全域變數(global variable)、靜態變數(static variable)。
  2. Stack (堆疊):此區塊記憶體,主要用來存放區域變數(local variable)、方法的參數(method parameter)與方法的回傳位址(method return address)等。此區塊記憶體,在編譯時期就已決定好生命週期,作業系統會自動化來管理,決定什麼時候要回收資源。如果 Stack 區不夠用或是遞回涵式(recursive function)沒寫好,會產生,常見典型的錯誤 StackOverFlow Error 的錯誤。
  3. Heap (堆積):可以被預測的資料放在堆疊區(Stack Memory),而不可被預測的資料就放在堆積區(Heap Memory)。什麼事不可預測的資料呢?就是需要在程式執行後,才知道用多少記憶體,相對的此區塊資料,作業系統不會自動進行回收,程式設計師必須自行管理此區的記憶體,透過 GC,Garbage Collection,垃圾回收,釋放用不到的資源記憶體空間。而 Heap 區,若記憶體不夠用,則會產生 OutOfMemoryError。

https://tw-hkt.blogspot.com/2019/03/blog-post_31.html

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 STORY 的頭像
    STORY

    STORY

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