1. 程式人生 > >JAVA-初_須知3_資料型別

JAVA-初_須知3_資料型別

==>基本資料型別

Java基本資料型別主要包括整數型別、浮點型別、字元型別和布林型別。

各基本資料型別的取值範圍、佔用的記憶體大小及預設值:
在這裡插入圖片描述

1.整數型別
整數型別用來儲存整數數值,即沒有小數部分的數值。與C、C++語言相同,整數在Java語言中有3種表示形式:十進位制、八進位制和十六進位制。

  • 十進位制整數:以1~9開頭的數,如:123,−456,0。
  • 八進位制整數:以0開頭且其後以0~7範圍(包括0和7)內的陣列成的整數,如:01011,−031,分別表示十進位制數521和−25。計算方式如下:
    在這裡插入圖片描述
  • 十六進位制整數:以0x或0X開頭且其後以0~9、a~f(包括0和9,a和f)組成,如:0x25,0Xb01e,分別表示十進位制數37和45086。計算方式如下:
    在這裡插入圖片描述

    注意:在十六進位制數中,0~9由數字表示,10~15分別由a、b、c、d、e、f代替。無論是十進位制數、八進位制數還是十六進位制數,計算機會先將它們轉換成二進位制數,然後再進行計算。

二進位制數是由數字0和1組成的資料流(或資料序列),在記憶體中只能存放二進位制形式的資料,例如00011101,這個二進位制資料流(或稱二進位制資料序列)共有8位(最左面的為最高位,最右面的為最低位),每一位稱做1個位元(bit),每8位稱做1個位元組(byte)。這個二進位制數表示十進位制整數29,計算方式:
在這裡插入圖片描述
在Java中存在4種類型來儲存整數:byte、short、int和long,它們的取值範圍如表2.2所示。其中int是最常使用的一種整數型別,但在大型的計算中常會生成很大的整數,超出int型別所表示的取值範圍,此時要使用long型別;byte和short型別主要用於一些特殊的情況。

可以根據這些型別定義相應的整型變數,定義方法如下:

byte a                                 //定義變數a並指定為byte型

short b                               //定義變數b並指定為short型

int c                                         //定義變數c並指定為int型

long d                                 //定義變數d並指定為long型

在為這些整型變數賦值時,既可賦值為十進位制的整數,也可以賦值為八進位制或十六進位制的整數,但要注意變數能夠接受的最大與最小值,否則會出現錯誤。對於long型值,若賦給的值大於int型的最大值或小於int型的最小值,則需要在數字後加L或l(小寫的L),表示該數值為長整數。例如,long num=2147483649L。

對變數賦值後,通過輸出語句會自動地將變數值轉換為十進位制整數輸出。

例如:分別為位元組型變數a賦值為十進位制數123,短整型變數b賦值為八進位制數045,整型變數c賦值為十六進位制數0xb12f和長整型變數d賦值為十六制數0x160000000L,然後輸出這些變數值。

byte a=123;                    //定義byte型變數a, 並賦給十進位制數值123

short b=045;                   //定義short型變數b, 並賦給八進位制數值045

int c=0xb12f;                        //定義int型變數c, 並賦給十六進位制數值0xb12f

long d=0x160000000L;                //定義long型變數d, 並賦給十六進位制數值0x160000000L

System.out.println(a);                       //輸出結果為: 123

System.out.println(b);                       //輸出結果為: 37

System.out.println(c);                       //輸出結果為: 45359

System.out.println(d);                       //輸出結果為: 5905580032

說明:
賦給long型變數d的十六進位制數0x160000000轉換為二進位制數後需佔用記憶體36位(由左至右,每位數字轉換成4位的二進位制數,如0x39將轉換為0011 1001),而Java中規定int型資料佔用記憶體為32位,所以十六進位制數0x160000000超出了int範圍,需要在數字後加L或l(小寫的L)表示它是一個長整數,計算機將為其分配64位記憶體空間進行儲存。

2.浮點型別
Java語言包含兩種浮點型別:單精度浮點型別和雙精度浮點型別,它們分別用float和double關鍵字來標識,計算機通過這兩種資料型別來儲存小數。

在Java中,預設情況下小數都被看做double型,佔用記憶體64位,若想使用float型小數,則需要在小數後面新增字母F或f。如1.23F,它佔用記憶體32位。

計算機計算出的小數點後的n位,與實際的數值會有一定的誤差。它只能儘量地去接近實際值,所以位數越多越精確。通常float型就足夠了,若要求更精確的計算可以使用double型,但也要節約資源。

定義浮點型變數的方法如下:

float a              //定義變數a並指定為float型

double b            //定義變數b並指定為double型

在為浮點型變數賦值時,既可以賦值為以十進位制表示的小數,也可以賦值為以科學記數法形式表示的數值。對於float型,必須在數值後加F或f,表示該數值為單精度浮點數。

例如:分別為單精度浮點型變數a1賦值為十進位制表示的小數12.34F,單精度浮點型變數a2賦值為科學記數法表示的數值1.234E1F,雙精度浮點型變數b1賦值為十進位制表示的小數56.78,雙精度浮點型變數b2賦值為科學記數法表示的數值567.8E-1,然後輸出這些變數值。

float a1=12.34F;                  //為float型變數a1賦值為十進位制表示的單精度小數(在數字後加F)

float a2=1.234E1F;              //為float型變數a2賦值為科學記數法表示的單精度小數(在數字後加F)

double b1=56.78;                 //為double型變數b1賦值為十進位制表示的雙精度小數

double b2=567.8E-1;                  //為double型變數b2賦值為科學記數法表示的雙精度小數

System.out.println(a1);                     //輸出結果為: 12.34

System.out.println(a2);                     //輸出結果為: 12.34

System.out.println(b1);                     //輸出結果為: 56.78

System.out.println(b2);                     //輸出結果為: 56.78

3.字元型別
Java語言中的字元型別用來儲存單個字元,它佔用16位(兩個位元組)的記憶體空間,使用關鍵字char進行標識。

因為計算機只能儲存二進位制資料,所以需要將字元通過一串二進位制資料來表示,也就是通常所說的字元編碼。Java對字符采用Unicode字元編碼,Unicode使用兩個位元組表示1個字元,並且Unicode字符集中的前128個字元與ASCII字符集相容。

如字元’a’的ASCII編碼的二進位制資料形式為01100001,Unicode字元編碼的二進位制資料形式為00000000 01100001,它們都表示十進位制數97。因此與C、C++語言一樣,Java同樣把字元作為整數對待。

說明:

ASCII是用來表示英文字元的一種編碼,每個字元佔用一個位元組,所以最多可表示256個字元。但英文字元並沒有那麼多,ASCII使用前128個(位元組中最高位為0)字元來存放包括控制符、數字、大小寫英文字母和其他一些符號的字元。而位元組的最高位為1的另外128個字元稱為“擴充套件ASCII”,通常存放英文的製表符、部分音標字元等其他一些符號。使用ASCII編碼無法表示中文等其他一些國家的語言文字。

Unicode編碼採用無符號編碼,可以儲存65536個字元(0x0000~0xffff),所以Java中的字元幾乎可以處理所有國家的語言文字。

Java中的字元通過Unicode編碼以二進位制的資料形式儲存到計算機中,計算機可以通過資料型別判斷要輸出的是一個字元還是一個整數。

定義字元型別的變數,可以通過關鍵字char來定義。定義方法如下:

char c1                               //定義字元型變數c1 

char c2                               //定義字元型變數c2 

賦給char型變數的字元常量值必須用英文狀態下的一對單引號括起來,由於Java的字符采用Unicode編碼,一箇中文字與一個英文字母在Java中同樣都是用一個字元來表示。

例如分別為字元型變數a賦值為’m’、字元變數b賦值為’明’、字元變數c賦值為’9’和字元變數d賦值為’@’,然後輸出。

char a='m';                          //為字元型變數ch1賦值字元常量'm'

char b='明';                         //為字元型變數ch1賦值字元常量'明'

char c='9';                                //為字元型變數ch1賦值字元常量'9'

char d='@';                         //為字元型變數ch1賦值字元常量'@'

System.out.println(a);                       //輸出結果為: m

System.out.println(b);                       //輸出結果為: 明

System.out.println(c);                       //輸出結果為: 9

System.out.println(d);                       //輸出結果為: @

也可以為字元變數賦值為0~65535範圍內的整數,這些整數可使用十進位制、八進位制或十六進位制來表示。根據變數型別,計算機會自動將這些整數轉換為所對應的字元輸出。

例如分別為字元變數ch1賦值為十進位制數97、字元變數ch2賦值為八進位制數0142、字元變數ch3賦值為十六進位制數0x63,然後輸出。

char ch1=97;                             //為字元型變數ch1賦值十進位制數97

char ch2=0142;                         //為字元型變數ch2賦值八進位制數0142

char ch3=0x63;                         //為字元型變數ch2賦值十六進位制數0x63

System.out.println(ch1);                   //輸出結果為: a

System.out.println(ch2);                   //輸出結果為: b

System.out.println(ch3);                   //輸出結果為: c

與C、C++語言一樣,Java語言提供了轉義字元來表示一些特殊的字元。轉義字元以反斜槓開頭,Java中提供的轉義字元:
在這裡插入圖片描述

將轉義字元賦值給字元變數時,與字元常量值一樣需要使用單引號將轉義字元括起來,例如:分別為字元變數c1賦值為’\’、字元變數c2賦值為’’’、字元變數c3賦值為’\115’、字元變數c4賦值為’\u0052’,字元變數c5賦值為’\u2605’,然後輸出。

char c1='\\';                                      //為變數c1賦值轉義字元“\\”

char c2='\'';                                     //為變數c2賦值轉義字元“\'”

char c3='\115';                                  //為變數c3賦值轉義字元“\115”表示的字元

char c4='\u0052';                               //為變數c4賦值轉義字元“\u0052”表示的字元

char c5='\u2605';                               //為變數c5賦值轉義字元“\u2605”表示的字元

System.out.println(c1);                       //輸出結果為: \

System.out.println(c2);                       //輸出結果為: '

System.out.println(c3);                       //輸出結果為: M

System.out.println(c4);                       //輸出結果為: R

System.out.println(c5);                       //輸出結果為: ★

在Java中,對字元變數進行如下的賦值也是合法的:

char char1='B'+1;                     //將字元常量值'B'與十進位制整數1相加的結果賦給字元變數char1

char char2='B'+'1';                     //將兩個字元常量值'B'與'1'相加的結果賦給字元變數char2

char char3=24+76;                    //將兩個十進位制整數24與76相加的結果賦給字元變數char3

char char4='n'-32;                     //該操作將得到大寫的字母N,'N'+32將得到小寫的字母n

System.out.println(char1);                 //輸出結果為: C

System.out.println(char2);                 //輸出結果為: s

System.out.println(char3);                 //輸出結果為: d

System.out.println(char4);                 //輸出結果為: N

4.布林型別
布林型資料只有兩個值:true和false,分別代表布林邏輯中的“真”和“假”,且布林值不能與整數進行轉換,通常布林型資料在流程控制中作為判斷條件。

定義布林型變數,可以通過關鍵字boolean來定義。定義方法如下:

boolean b1;                       //定義boolean型變數b1

boolean b2;                       //定義boolean型變數b2

布林型資料只存在true和false數值,所以在為boolean型變數賦值時,除這兩個值外的任何數值都是非法的。

例如,分別為布林型變數married賦值為false,alive賦值為true,然後輸出。

boolean married=false;

boolean alive=true;

System.out.println("已婚:"+married);                      //輸出結果為: false

System.out.println("生命:"+alive);                          //輸出結果為: true