官术网_书友最值得收藏!

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

在程序設計的過程中,如果一個參數只有正和反兩方面,就可以將其設置為布爾型類型。

主站蜘蛛池模板: 边坝县| 安义县| 海城市| 江安县| 老河口市| 永嘉县| 景宁| 闽侯县| 南川市| 苏尼特左旗| 甘谷县| 哈尔滨市| 拜泉县| 治县。| 昆明市| 玉树县| 康保县| 和龙市| 徐州市| 霍林郭勒市| 玉屏| 定结县| 体育| 武强县| 庆阳市| 琼结县| 旌德县| 平武县| 靖安县| 呼玛县| 甘肃省| 永福县| 宣化县| 白银市| 广昌县| 剑阁县| 永登县| 喀喇沁旗| 泾阳县| 河间市| 菏泽市|