- Java程序設計基礎(第6版)
- 陳國君主編
- 2510字
- 2019-07-01 10:10:59
3.1 數據類型
程序在執行的過程中,需要對數據進行運算,也需要存儲數據。這些數據可能是由使用者輸入的,也可能是從文件中取得的,甚至是由網絡上得到的。在程序運行的過程中,這些數據通過變量存儲在內存中,以便程序隨時取用。
數據存儲在內存的一塊空間中,為了取得數據,必須知道這塊內存空間的位置,為了方便使用,程序設計語言用變量名來代表該數據存儲空間的位置。將數據指定給變量,就是將數據存儲到對應的內存空間;調用變量,就是將對應的內存空間中的數據取出來使用。
一個變量代表一個內存空間,數據就存儲在這個空間中,使用變量名來取得數據非常方便,然而由于數據在存儲時所需要的內存容量各不相同,不同的數據就必須要分配不同大小的內存空間來存儲,因此在Java語言中對不同的數據用不同的數據類型來區分。
在程序設計中,數據是程序的必要組成部分,也是程序處理的對象。不同的數據有不同的數據類型,不同的數據類型有不同的數據結構、不同的存儲方式,并且參與的運算也不相同。通常計算機語言將數據按其性質進行分類,每一類稱為一種數據類型(data type)。數據類型定義了數據的性質、取值范圍、存儲方式以及對數據所能進行的運算和操作。程序中的每一個數據都屬于一種類型,定義了數據的類型也就相應決定了數據的性質以及對數據進行的操作,同時數據也受到類型的保護,確保對數據不進行非法操作。
Java語言中的數據類型分為兩大類:一類是基本數據類型(primitive types);另一類是引用數據類型(reference types),簡稱引用類型。基本數據類型是由程序設計語言系統所定義、不可再分的數據類型。每種基本數據類型的數據所占內存的大小是固定的,與軟硬件環境無關。基本數據類型在內存中存放的是數據值本身。引用數據類型在內存中存放的是指向該數據的地址,不是數據值本身,它往往由多個基本數據類型組成,因此,對引用數據類型的應用稱為對象引用,引用數據類型也被稱為復合數據類型,在有的程序設計語言中稱為指針。
基本數據類型有整型、浮點型、邏輯型和字符型;引用數據類型包括類、數組和接口等。本節只介紹基本數據類型,引用數據類型在5.1節中再進行介紹。
Java語言的數據類型實際上都是用類實現的,即引用對象的使用方式,同時Java語言也提供了類似C語言中簡單類型的使用方式,即聲明類型的變量。
Java語言定義了4類共8種基本類型,其中有4種整型、2種浮點型、1種布爾型和1種字符型,它們的分類及關鍵字如下。
●整型:byte,short,int,long。
●浮點型:float,double。
●布爾型:boolean。
●字符型:char。
1.整型
整數有正整數、零、負整數,其含義與數學中的含義相同。Java語言的整數有三種進制的表示形式。
●十進制:用多個0~9的數字表示,如123和—100,其首位不能為0。
●八進制:以0開頭,后跟多個0~7的數字,如0123。
●十六進制:以0x或0X開頭,后跟多個0~9的數字或a~f的小寫字母或A~F的大寫字母,a~f或A~F均表示值10~15,如0X123E。
Java語言定義了4種表示整數的類型:字節型(byte)、短整型(short)、整型(int)、長整型(long)。每種整型的數據都是帶符號位的。Java語言的每種數據類型都對應—個默認的數值,使得這種數據類型變量的取值總是確定的,體現了其安全性。整型類型如表3.1所示。
表3.1 Java語言的整數類型

一個整數隱含為整型(int型)。當要將一個整數強制表示為長整數時,需在后面加字母l或L。所以若聲明long型變量的值超過int型的取值范圍時,如果數的后面不加l或L,系統會認是int型而出錯。
2.浮點型
Java語言用浮點型表示數學中的實數(浮點數),也就是既有整數部分又有小數部分的數。浮點數有兩種表示方式。
●標準計數法:由整數部分、小數點和小數部分構成,如3.0,3.1415等。
●科學計數法:由十進制整數、小數點、小數和指數部分構成,指數部分由字母E或e跟上帶正負號的整數表示,如123.45可表示為1.2345E+2。
浮點數用于需要小數位精確度高的計算。例如,計算平方根或三角函數等,都會產生浮點型的值。Java語言的浮點型有單精度浮點(float)和雙精度浮點(double)兩種,如表3.2所示。
表3.2 Java語言的浮點數類型

一個浮點數隱含為double型。若在一個浮點數后加字母f或F,將其強制轉換為float型,所以若聲明float型變量時如果數的后面不加f或F,系統會認為是double型而出錯。double型占8字節,有效數字最長為15位,之所以稱它為double型,是因為它的精度是float型精度的2倍,所以又稱為雙精度型。
3.布爾型
布爾型(boolean)也稱為邏輯型,用來表示邏輯值。它只有true和false兩個取值。其中,true代表“真”,false代表“假”,true和false不能轉換成數字表示形式。
所有關系運算(如a>b)的返回值都是邏輯型的值。邏輯型也用于控制語句中的條件表達式,如if、while、for等語句。
4.字符型
字符型(char)用來存儲單個字符。Java語言中的字符采用的是Unicode字符集編碼方案,在內存中占2字節,是16位無符號的整數,一共有65 536個,字符的取值范圍為0~65 535,表示其在Unicode字符集中的排序位置。Unicode字符是用“\u0000”到“\uFFFF”之間的十六進制數值來表示的,前綴“\u”表示是一個Unicode值,后面的4個十六進制值表示是哪個Unicode字符。Unicode字符表的前128個字符剛好是ASCII表。每個國家的字母表的字母都是Unicode表中的一個字符。由于Java語言的字符類型采用了Unicode這種新的國際標準編碼方案,因而便于中文字符和西文字符的處理。因此,與其他語言相比,Java語言處理多語種的能力大大加強。
說明:(1)字符型數據的聲明只能表示單個字符,且必須使用單引號將字符括上。
(2)Java語言中所有可見的ASCII字符都可以用單引號括起來成為字符,如'a'、'B'、'?'等。要想得到一個字符在Unicode字符集中的取值,必須強制轉換成int類型,如(int)'a'。
(3)由于字符型用來表示Unicode編碼中的字符,所以字符型數據可以轉化為整數,其值為0~65 535。但要取得該取值范圍的數所代表的Unicode表中相應位置上的字符,必須強制轉換成char型,如“int c=20320;char s=(char)c;”。
現將Java語言的4類8種基本數據類型總結歸納成表3.3。
表3.3 Java語言的基本數據類型

為了使用上的方便,Java語言提供了數值型數據的最大值與最小值的標識符及常量值,如表3.4所示。
表3.4 數值型常量的特殊值代碼

說明:表3.4中表示浮點數float和double的最小值和最大值的常量分別為正數范圍的最小值和最大值。若要取得負數范圍的最小值或最大值,可用加負號的方法獲得,如取得double型的最小負數可用如下語句:double min=—Double.MAX_VALUE。
- Spring 5.0 Microservices(Second Edition)
- Progressive Web Apps with React
- Magento 2 Development Cookbook
- Python Network Programming Cookbook(Second Edition)
- 從學徒到高手:汽車電路識圖、故障檢測與維修技能全圖解
- 碼上行動:用ChatGPT學會Python編程
- Building Machine Learning Systems with Python(Second Edition)
- C#程序設計教程(第3版)
- Troubleshooting Citrix XenApp?
- PHP+MySQL Web應用開發教程
- 軟硬件綜合系統軟件需求建模及可靠性綜合試驗、分析、評價技術
- AngularJS by Example
- Scala實用指南
- 程序員超強大腦
- Visual C++ 2017網絡編程實戰