5     基本資料型別(Primitive Types)

Java是屬於強型別(Strongly typed)程式語言,必須明確宣告變數型別才可使用,Visual Basic則屬於弱型別(Weakly typed)程式語言。Java的基本資料型別皆屬於實值型別。

基本資料型別可分為字元(Characters)、整數(Integers)、浮點數(Floating Point Numbers)、與布林值(Booleans)四類,並可再細分為八種資料型態,都有其固定長度。

資料型別

資料型態

位元組

位元

最小值

最大值

初期值

字元

char

2

16

0

216-1

‘\u0000’

 

整數

byte

1

8

-27

27-1

0

short

2

16

-215

215-1

0

int

4

32

-231

231-1

0

long

8

64

-263

263-1

0L(0l)

浮點數

float

4

32

不計

不計

0.0F(0.0f)

double

8

64

不計

不計

0.0

布林值

boolean

1

8

false

true

false

※參考資料型別的String型別初期值為null

※位元組越大越佔記憶體,沒有必要時儘量使用較少記憶體之資料型別,例如預期資料會落在-128127間整數時,只要使用佔用1byte記憶體的byte型別,就不需宣告為占用2byte以上的shortintlong整數型別。

※只有當變數身份是class內的成員(方法之外)時,宣告時可不給予初期值,Java會預設初期值,區域變數(方法或稱函式內變數)必須自己設定初期值,否則會有編譯錯誤訊息。

 

基本資料型別適用範圍:存放單一字元時,使用字元資料型別。存放整數數字時,依數字可能大小選擇4種整數資料型別之一。存放真假值時,使用boolean型別。

 

[5-1字元型別(char)]

字元型別宣告只能針對單一字元,並使用單引號,佔用2個位元組。宣告為字元型別(char)之欄位,不論是以字元、unicode碼或ASCII碼等指定其值,外在顯示時-例如以“System.out.println”列印顯示,一定為 “I”等之字元,不會顯式unicodeASCII內碼。

<>字元型別

class Char1 {

public static void main (String[] args) {

   char twobytechar;   //宣告字元型別twobytechar

 

   twobytechar = 'I';   //指定字元

   System.out.println("英文字母顯示 = "+ twobytechar);

   twobytechar = '\u0049';   //指定unicode(unicode table 16進位碼)

   System.out.println("Unicode碼顯示 = "+ twobytechar);

   twobytechar = 73; //指定整數(16進位49轉換為10進位之73)

   System.out.println("ASCII十進位碼顯示 = "+ twobytechar);

   twobytechar = '';

   System.out.println("中文字元顯示 = "+ twobytechar);

 

   twobytechar = '\u6211';

   System.out.println("中文Unicode碼顯示 = "+ twobytechar);

   twobytechar = 24576;

   System.out.println("中文十進位碼顯示 = "+ twobytechar);

   twobytechar = '\0';   // \0為空字元表示法

   System.out.println("特殊字元之空字元顯示 = "+ twobytechar);

   }

}

命令提示字元下輸入C:\js>java Char1

執行結果:英文字母顯示 = I

Unicode碼顯示 = I

ASCII十進位碼顯示 = I

中文字元顯示 =

中文Unicode碼顯示 =

中文十進位碼顯示 =

特殊字元之空字元顯示 =        

 

※直接以字元顯示為較常用之方式。

※欄位名稱習慣使用小寫字母,例如twobytecharonebyte,儘可能使用有意義的單字組合。

 

[5-2位元組整數型別(byte)]

範圍為-128~127。常用於ASCII碼之資料,不得用於中文資料。佔有記憶體1位元組,不論指定何種型式之值,其外在顯示皆為整數

class Byte1 {

public static void main (String[] args) {

byte eightbits;

 

eightbits = 73;

System.out.println("數值顯示結果 = "+ eightbits);

 

eightbits = 'I';

System.out.println("字母IASCII十進位碼顯示結果 = "+ eightbits);

 

eightbits = '\0';

System.out.println("特殊字元之空字元碼顯示結果 = "+ eightbits);

   }

}

命令提示字元下輸入C:\js>java Byte1

執行結果:數值顯示結果 = 73

字母AASCII十進位碼顯示結果 = 73

特殊字元之空字元碼顯示結果 = 0

 

[Java常用特殊字元]

字元值

字元

說明

字元值

字元

說明

0

\0

空字元

12

\f

換頁

7

\a

鈴聲

13

\r

Enter

8

\b

Backspace

34

\”

雙引號

9

\t

Tab

39

\’

單引號

10

\n

換行

92

\\

右斜線

 

<>使用System.out.print換行時可用下列方式,本例為列印顯示宋詞:「浣溪紗」

 

class CarriageReturn{

public static void main(String[] args){

   char cr = 10;   //非位元,字元10代表換行

   char spacechar = 0;

   String poemheader = "北宋晏殊浣溪紗";

   String poembody1 = "一曲新詞酒一杯";

   String poembody2 = "去年天氣舊亭台";

   String poembody3 = "夕陽西下幾時回";

   String poembody4 = "無可奈何花落去";

   String poembody5 = "似曾相識燕歸來";

   String poembody6 = "小園香徑獨徘徊";

   System.out.println(poemheader);

   System.out.println(spacechar);

   System.out.print(poembody1 + "\n");

   System.out.print(poembody2 + cr);

   System.out.print(poembody3 + cr);

   System.out.print(poembody4 + "\n");

   System.out.print(poembody5 + cr);

   System.out.println(poembody6);

   }

}

命令提示字元下輸入C:\js>java CarriageReturn (記得要先編譯)

執行結果:北宋晏殊浣溪紗

 

一曲新詞酒一杯

去年天氣舊亭台

夕陽西下幾時回

無可奈何花落去

似曾相識燕歸來

小園香徑獨徘徊

 

※請讀者自行改編程式而達成同樣效果。

 

[5-3短整數型別(short)]

佔有記憶體2個位元組,不論指定何種型式之值,其外在顯示皆為整數。

class TooShort1{

public static void main (String[] args) {

   short veryshort;

 

   veryshort = 65;

   System.out.println("一般數值外在顯示 = "+veryshort);

 

   veryshortt = 'C';

   System.out.println("字母CASCII十進位碼外在顯示 = "+veryshort);

 

   veryshort = '';

   System.out.println("中文字元的「台」之十進位碼外在顯示 = "+veryshort);

 

   veryshort = '\0';

   System.out.println("特殊字元之空字元碼外在顯示 = "+veryshort);

   }

}

命令提示字元下輸入C:\js>java TooShort1

執行結果:一般數值外在顯示 = 65

字母CASCII十進位碼外在顯示 = 67

中文字元的「台」之十進位碼外在顯示 = 21488

特殊字元之空字元碼外在顯示 = 0

 

[5-4整數型別(int)]

使用關鍵字int進行宣告,佔有記憶體4位元組,不論指定何種型式之值,其外在顯示皆為整數。

class Integer1 {

public static void main (String[] args) {

   int myinteger;

 

myinteger = 65;

System.out.println("一般數值顯示 = "+ myinteger);

 

myinteger = 'A';

System.out.println("英文字母顯示 = "+ myinteger);

 

myinteger = '';

System.out.println("中文字元顯示 = "+ myinteger);

 

myinteger = '\u4E2D';

System.out.println("Unicode顯示 = "+ myinteger);

 

myinteger = 047055;

System.out.println("八進位顯示 = "+ myinteger);

 

       myinteger = 0x4E2D;

       System.out.println("十六進位顯示 = "+ myinteger);

 

myinteger = '\0';

System.out.println("特殊字元顯示 = "+ myinteger); } }

命令提示字元下輸入C:\js>java Integer1

執行結果:一般數值顯示 = 65

英文字母顯示 = 65

中文字元顯示 = 20013

Unicode顯示 = 20013

八進位顯示 = 20013

十六進位顯示 = 20013

特殊字元顯示 = 0

 

[5-5長整數型別(long)]

長整數宣告指定值時,必須於整數之後附加“L”“l”

佔有記憶體8位元組,不論指定何種型式之值,其外在顯示皆為整數。

class Verylong1 {

public static void main (String[] args) {

   long ll;

   ll = 100L;

   ll = 0xABCDEF987L;

 

   System.out.println("長整數之值 = "+ll);

   }

}

命令提示字元下輸入C:\js>java Verylong1

執行結果:長整數之值 = 46118402439

 

 

※各整數型別之指定運算皆以指定10進位整數值為常見。

 

[5-6浮點數型別(float/double)]

單精確度浮點數:使用關鍵字float宣告,指定值時必須於數字之後附加“F”“f”佔有記憶體4位元組。

倍精確度浮點數:使用關鍵字double宣告,指定值時於數字之後可不附加任何字元。佔有記憶體8位元組,其外在顯示為帶有小數之數字。倍精確度浮點數可較單精確度浮點數儲存更大之數字。

單、倍精確度浮點數不論指定何種型式之值,其外在顯示為帶有小數之數字。

class Nature1 {

public static void main (String[] args) {

        float singlep;

singlep = 111.99f;

System.out.println("float數值 = "+ singlep);

singlep = 1.1199E2f;

System.out.println("float數值 = "+ singlep);

singlep = 11199E-2f;

System.out.println("float數值 = "+ singlep);

double doublep;

doublep = 111.99;

System.out.println("double數值 = "+ doublep);

doublep = 1.1199E2;

System.out.println("double數值 = "+ doublep);

doublep = 111990E-3;

System.out.println("double數值 = "+ doublep); } }

命令提示字元下輸入C:\js>java Nature1

執行結果:float數值 = 111.99

float數值 = 111.99

float數值 = 111.99

double數值 = 111.99

double數值 = 111.99

double數值 = 111.99

 

備註:指數E之表示法

格式:數字E[-]正整數

1.1199E2=1.1199*102=111.99

11199E-2=11199*(1/10)2=111.99

111990E-3=111990*(1/10)3=111.99

 

[5-7布林值型別(boolean)]

宣告布林值的關鍵字為boolean,布林值只能為“true”“false”

class Boolean1 {

public static void main (String[] args) {

        boolean tf1;

 

tf1 = true;

System.out.println("布林值 = "+tf1);

 

tf1 = false;

System.out.println("布林值 = "+tf1);

   }

}

命令提示字元下輸入C:\js>java Boolean1

執行結果:布林值 = true

布林值 = false

 

arrow
arrow
    文章標籤
    java 欄位 實值型別
    全站熱搜
    創作者介紹
    創作者 祈泊 的頭像
    祈泊

    祈泊的部落格

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