- Java程序設計案例教程
- 許敏 史熒中
- 1903字
- 2020-08-07 16:35:15
2.2 數據類型
現實生活中的數據有不同類型之分,如在計算職工工資時,職工人數為整數,職工姓名為字符串,職工工資為浮點數等。
2.2.1 數據類型的劃分
Java語言中的數據類型分為基本數據類型和引用數據類型。基本數據類型共有8種,包括4種整數類型(byte、short、int和long)、兩種實數(浮點數)類型、字符類型(char)和布爾類型(boolean)。引用數據類型包括字符串(String)、類(class)、接口(interface)、數組等,其中字符串類型兼具某些基本數據類型的特征。另外,也有文獻把空類型(void)看作是一種數據類型。Java數據類型如圖2-1所示。
2.2.2 基本數據類型
圖2-1 Java數據類型
在棧中可以直接分配內存的是基本數據類型。
1.整型
整型是那些沒有小數部分的數據類型。Java中提供字節型(byte)、短整型(short)、整型(int)和長整型(long)4種整數類型,這些整數類型都有正負數之分。每種整型占用的二進制位數和取值范圍見表2-2。
表2-2 整數類型的取值范圍
int類型是最常用的整數類型,它表示的數據范圍已經足夠大了,基本能滿足現實生活的需要。如果需要表示更大的整數,這時就要用long。由于Java中的整型默認為int型,在表示長整型時需要在數值后面加寫字母L或其對應的小寫字母l,這時形如8L及-10l的整數占用64位存儲空間。鑒于字母l與數字1非常容易混淆,強烈推薦使用L。
除了日常生活中使用的十進制表示形式外,Java中的整數常量也可以采用八進制或十六進制表示形式。八進制整數常量以0為前綴,使用數字0~7表示,如065為八進制形式的整數常量,等價于十進制中的53。十六進制數用0~9及A~F(a~f)表示,并以0x或0X為前綴,如0xa02F為十六進制的整數常量。
2.浮點類型
浮點類型是帶有小數部分的數據類型,也稱實型。Java中有單精度float和雙精度double兩種類型的浮點數,每種類型占用的二進制位數和取值范圍見表2-3。
表2-3 浮點類型的取值范圍
最常用的浮點類型是double,如3.14D、2.5d等都是double類型。默認情況下,可以省略其后綴D或d。若要指定float類型的數據,則需在浮點數后面加后綴F或f,如3.14F或2.5f為float類型的數據。
3.布爾類型
布爾類型用于表達兩個邏輯狀態之一的值,也稱為邏輯類型。Java中的布爾類型變量是boolean,取值只能為true和false兩者之一,分別代表邏輯“真”與邏輯“假”。與C/C++不同的是,Java中的布爾值不能與0、1相互轉換。
布爾類型通常被用在流程控制中,作為判斷條件。
boolean flag=true;
4.字符類型
字符類型char用于表示單個字符,如字母、數字、標點符號和其他符號。Java使用Unicode字符集,因此char類型的數據均是16位,不管是英文還是中文,都占用兩個字節的內存空間。字符類型常量用一對單引號括起來,比如'K'、'a'、'3'、'你'等。也可以使用Unicode編碼來表示字符值,用\u開頭的4個十六進制數表示,如'\u0041'表示'A'。
Java中有以反斜杠(\)開頭的字符,反斜杠將其后面的字符轉變為另外的含義,稱為轉義字符。Java中常用的轉義字符如表2-4所示。
表2-4 Java中常用的轉義字符
5.字符串類型
字符串類型是程序設計中的常用類型,雖然字符串不是Java語言的基本數據類型,但它具有許多基本數據類型的特征,比如可以聲明字符串變量,對字符串變量直接賦值等,因此在本節中作簡單介紹。
字符串是包含在""中的字符序列,序列中字符的個數稱為字符串的長度,長度為0的字符串為空串。以下為部分字符串。
"Hello World!"
"歡迎!"
" " //字符串中有一個空格字符,長度為1
"" //空串,長度為0
null //空對象,不指向任何實例
字符串變量的聲明格式為:
String變量名;
變量聲明后就可以對其賦值:
Strings1="Hello",s2; //聲明String型變量s1和s2,同時給s1賦值
s2="World!"; //給s2賦值為"World!"
String s3 = s1+s2 ; // s3為"HelloWorld!"
其中“+”運算將兩個字符串連接成一個新的字符串。若其中某個操作數為其他數據類型,則先將其隱式轉換成字符串,然后再進行字符串連接運算。例如:
//先將數值800轉化為字符串"800",再進行連接運算
System.out.println("職工津貼為每月"+800+"元");
6.數據類型轉換
整型、字符型、浮點型數據可以混合運算。不同優先級類型的數據需要先轉換為同一類型,再進行運算。Java中類型的優先級由低級到高級分別為(byte,short,char)→long→float→double。
(1)自動類型轉換
當出現混合運算時,類型轉換的一般原則是低優先級(位數少)的類型轉換為高優先級(位數多)的類型,稱作自動(隱式)類型轉換。當某種類型的值賦給另一種類型的變量時,如果這兩種類型是兼容的,就可以將低優先級類型的值賦給高優先級類型的變量。例如當int型值可以賦給long型的變量時,Java自動執行轉換。如下面的語句可以在Java編譯器中直接通過:
byte a = 10; //定義字節型變量a
int i=a;
float f=a;
(2)強制類型轉換
若將高優先級的值賦給低優先級的變量,如將long型值賦給int型變量,則可能造成信息的丟失,這時Java不能執行自動轉換,編譯器需要程序員通過強制(顯式)類型轉換的方式確定這種轉換。強制類型轉換的一般形式為:
(type)expresstion
例如: