- 零基礎學Java(第5版)
- 黃傳祿 常建功 陳浩
- 3352字
- 2020-06-17 18:13:09
3.2 數據類型
Java語言是一個強調數據類型的語言,在聲明任何變量時,必須將該變量定義為一種數據類型。Java中的數據類型包括基本數據類型和對象類型(也稱為引用數據類型)。對象類型不屬于本章所講述的內容,本章主要介紹數據的基本類型。Java程序中,總共有8大基本類型:其中包括4種整型、1種字符型、2種浮點型、1種布爾型。除了這幾種基本類型外,其他都屬于對象類型的數據。
3.2.1 整型
什么是整型呢?從字面上就可以知道,整型就是整數類型,也就是沒有小數點的數字,可以是正數也可以是負數。在Java中,整型主要有4種:字節型(byte)、整數型(int)、短整型(short)、長整型(long)。
1.字節型
【實例3-1】byte用一個字節來表示整數值,它的范圍介于-128~127之間。通常這種類型的整型數據擁有上節中提到的所有進制。但無論采用哪種進制,在輸出控制臺上,系統都會將其自動轉化為十進制,從下列代碼段可以得到證實。
01 public class Byte { //定義一個Byte類 02 public static void main(String[] args) { //主方法 03 byte x = 22; //x是十進制數 04 byte y = 022; //y是八進制數 05 byte z = 0x22; //z是十六進制數 06 //輸出相應十進制的值 07 System.out.println("轉化成十進制,x=" + x); 08 System.out.println("轉化成十進制,y=" + y); 09 System.out.println("轉化成十進制,z=" + z); 10 } 11 }
【代碼說明】第3~5行定義了3個byte型變量,分別代表不同的數制,第4行的變量值前綴是0,第5行的變量值前綴是0x。第7~9行并沒有使用類型轉換的函數,而是直接輸出這3個變量。
【運行效果】在DOS窗口中,通過Javac編譯該源代碼,然后通過Java執行編譯后的class文件。最終結果如下所示。
轉化成十進制,x=22 轉化成十進制,y=18 轉化成十進制,z=34
2.短整型
【實例3-2】short用兩個字節表示整數值,其整數值介于-32768~32767之間。它有八進制、十進制和十六進制3種表示方法,其表示方法與字節型是一樣的,從下面的程序段可以證實。
01 public class Short //定義一個Short類 02 { 03 public static void main(String[] args) //主方法 04 { 05 short x=22; //十進制 06 short y=022; //八進制 07 short z=0x22; //十六進制 08 //輸出相應十進制的值 09 System.out.println("轉化成十進制,x="+ x); 10 System.out.println("轉化成十進制,y="+ y); 11 System.out.println("轉化成十進制,z="+ z); 12 } 13 }
【代碼說明】第5~7行定義了3個short型變量,依然是用前綴0和0x代表八進制和十六進制。第9~11行沒有使用數據類型轉換的函數,直接輸出結果。
【運行效果】
轉化成十進制,x=22 轉化成十進制,y=18 轉化成十進制,z=34
可以看出,兩個程序段運行結果都是一樣的。其實,在實際編程過程中,開發者最常用的整型是int型。
3.整數型
【實例3-3】整數型又稱作int型,用4個字節來表示整數值,其整數值介于-2147483648~2147483647之間。整數型擁有以上所說的各種進制,其表示方法與字節型也相同,從下面的程序段同樣可以證實。
01 public class Int //定義一個Int類 02 { 03 public static void main(String[] args) //主方法 04 { 05 int x=22; //十進制 06 int y=022; //八進制 07 int z=0x22; //十六進制 08 //輸出相應十進制的值 09 System.out.println("轉化成十進制,x="+ x); 10 System.out.println("轉化成十進制,y="+ y); 11 System.out.println("轉化成十進制,z="+ z); 12 } 13 }
【代碼說明】第5~7行同樣定義了3種進制的變量,通過前綴0和0x來區別進制。第9~11行依然是直接輸出變量的值,而沒有顯式地進行類型轉換。
【運行效果】
轉化成十進制,x=22 轉化成十進制,y=18 轉化成十進制,z=34
4.長整型
【實例3-4】長整型long用8個字節表示整數型,其數值介于-9223372036854775808~9223372036854775807之間。它的所有特性基本與前幾種整型一樣,唯一不同的是,長整型的數據后面有一個“L”字母,這個也是從表現形式上區別于其他整型的最大特征。可從下面的程序代碼段中了解長整型與其他整型的區別。
01 public class Long //定義一個Long類 02 { 03 public static void main(String[] args) //主方法 04 { 05 long x=22L; //十進制 06 long y=022L; //八進制 07 long z=0x22L; //十六進制 08 //輸出相應十進制的值 09 System.out.println("轉化成十進制,x="+ x); 10 System.out.println("轉化成十進制,y="+ y); 11 System.out.println("轉化成十進制,z="+ z); 12 } 13 }
【代碼說明】第5~7行定義了3個長整型變量,要注意的是結尾的標識“L”。第9~11行直接輸出變量的值,會自動進行類型轉換,輸出的結果都是用十進制表示的。
【運行效果】
轉化成十進制,x=22 轉化成十進制,y=18 轉化成十進制,z=34
從以上程序代碼段中可以看出,4種不同的整型類型的數據,在程序段中所表現出來的運行結果幾乎是一樣的。不同的是每個類型數據的取值范圍不一樣,隨著字節數增多,取值范圍增大。雖然長整型的數據可以表示很大的數據,但如果超過了長整型的數據取值范圍,該如何處理這些數據呢?在Java中,有一種大數值類型的數據,由于它屬于對象類型數據,所以此處不做介紹。
3.2.2 字符型
字符型數據是平時程序設計中使用比較頻繁的類型,其占兩個字節。特別注意的是,它必須以單引號表示,例如'A'表示一個字符,這個字符就是A。"A"表示一個字符串,雖然只有一個字符,但因為使用雙引號,所以它仍然表示字符串,而不是字符。
總之,字符數據類型只能表示單個字符,任何超過一個字符的內容,都不能被聲明為字符型。字符的聲明是用單引號,通過輸出控制臺,看到的是單引號內的字符數據。
【實例3-5】通過下面的程序代碼,來看看字符型數據是如何輸出的。
01 //聲明了x,y,z,a四個字符型數據變量 02 public class Char //定義一個Long類 03 { 04 public static void main(String[] args) //主方法 05 { 06 char x='美'; //聲明一個字符型變量 07 char y='國'; //聲明一個字符型變量 08 char z='人'; //聲明一個字符型變量 09 char a='民'; //聲明一個字符型變量 10 System.out.println("這些字符組合起來就是:"+x+y+z+a); //輸出連接起來的字符 11 } 12 }
【代碼說明】第6~9行定義了4個字符型變量,第10行輸出變量的內容,將字符型數據連接在一起使用的運算符也是“+”。
【運行效果】
這些字符組合起來就是:美國人民
字符型數據和整型數據都是無小數點的數據,下面將要講述的類型則是帶小數點的數據,用專業術語來講就是浮點型。
3.2.3 浮點型
浮點型數據表示有小數部分的數字,總共有兩種類型:單精度浮點型(float)和雙精度浮點型(double)。
1.單精度浮點型
單精度浮點型占4個字節,有效數字最長為7位,有效數字長度包括了整數部分和小數部分。一個單精度浮點型的數據定義如下所示。
float x=223.56F
注意 在每個單精度浮點型數據后面,都有一個標志性符號“F”或者“f”,有這個標志就代表是單精度浮點型數據。
【實例3-6】下面演示單精度浮點型數據在程序代碼段中的使用情況。
01 //聲明了x,y,z三個浮點型變量 02 public class Float //定義一個Float類 03 { 04 public static void main(String[] args) //主方法 05 { 06 float x=22.2f; //聲明一個單精度類型變量 07 float y=42.2f; //聲明一個單精度類型變量 08 float z=x*y; //實現相乘 09 System.out.println("x*y="+z); 10 } 11 }
【代碼說明】第6~7行定義了兩個浮點型數據,它們都以“f”標識結尾。第8行定義了變量z,其值是前面定義的變量x和y的乘積。第9行輸出計算結果z。
【運行效果】
x*y=936.84
提示 如果在一個浮點數后面加上“F”或者“f”時,表示的就是單精度浮點型數據,否則,系統會認為是雙精度浮點型數據。
2.雙精度浮點型
雙精度浮點型數據占據8個字節,有效數字最長為15位,后面帶有標志性符號“D”或“d”。系統默認不帶標志性符號的浮點型數據是雙精度浮點型數據。雙精度浮點型數據的定義如下所示。
double x=33.5D
【實例3-7】下面是一個簡單的程序代碼段。
01 public class Double //定義一個Double類 02 { 03 public static void main(String[] args) //主方法 04 { 05 float x=23f; //聲明一個單精度類型變量 06 double y=44; //聲明一個雙精度類型變量 07 //輸出x和y的值 08 System.out.println("x="+x); 09 System.out.println("y="+y); 10 } 11 }
【代碼說明】第5行定義了一個單精度浮點型變量x,但沒有帶小數位。第6行定義了一個雙精度浮點型變量y,也沒有帶小數位,也沒有加標識“D”。第8~9行分別在控制臺輸出兩個變量,注意輸出的結果。
【運行效果】
x=23.0 y=44.0
從這段程序代碼中可以看出,即使浮點型數據是一個只有整數位沒有小數位的數據,在輸出控制臺上,其仍然是帶小數點的浮點數據,系統會自動加上小數點,并且小數位全部置0。
3.2.4 布爾型
布爾型數據其實很簡單,例如,如果有人問:去不去麥當勞?可以說“不去”。如果有人問:去不去看電影?可以說“去”。這里就隱藏著布爾型數據,布爾型數據就是“是”與“否”。在程序中使用“真”和“假”來代替“是”與“否”,即“true”和“false”。布爾類型的默認值是false,即如果定義了一個布爾變量但沒有賦初值,默認該布爾變量值是false。
【實例3-8】仔細觀察下面的程序代碼。
01 public class Boolean { //定義一個Boolean類 02 public static void main(String[] args) { //主方法 03 int a = 30; //聲明一個整型變量a 04 int b = 59; //聲明一個整型變量b 05 boolean x, y, z; //聲明三個布爾型變量x、y、z 06 x = (a > b); //為變量x賦值 07 y = (a < b); //為變量y賦值 08 z = ((a + b) == 50); //為變量z賦值 09 //輸出x、y和z的值 10 System.out.println("x=" + x); 11 System.out.println("y=" + y); 12 System.out.println("z=" + z); 13 } 14 }
【代碼說明】
當執行第6行代碼“a>b”時,不等式不成立,所以x的結果是假。
當執行第7行代碼“a<b”時,不等式成立,所以y的結果是真。
當執行第8行代碼“a+b==50”時,結果不成立,所以z的結果是假。
說明 布爾型數據在只有兩種選擇,不可能出現第三種選擇的情況下使用。
【運行效果】
x=false y=true z=false
在程序設計的過程中,如果一個參數只有正和反兩方面,就可以將其設置為布爾型類型。
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- 騰訊iOS測試實踐
- BeagleBone Media Center
- Python神經網絡項目實戰
- 人人都是網站分析師:從分析師的視角理解網站和解讀數據
- AutoCAD VBA參數化繪圖程序開發與實戰編碼
- Reactive Android Programming
- Building Machine Learning Systems with Python(Second Edition)
- Android開發三劍客:UML、模式與測試
- 深入解析Java編譯器:源碼剖析與實例詳解
- Python 快速入門(第3版)
- Mastering Object:Oriented Python(Second Edition)
- Python數據可視化之matplotlib實踐
- MySQL從入門到精通
- Visual FoxPro數據庫程序設計