- Visual Basic .NET程序設(shè)計(jì)(第3版)
- 陸漢權(quán) 馮曉霞 方紅光編著
- 2530字
- 2018-12-26 18:30:20
2.3 確定數(shù)據(jù)的性質(zhì):數(shù)據(jù)類型
要進(jìn)行計(jì)算就需要數(shù)據(jù),同時(shí)數(shù)據(jù)應(yīng)有它們明確的取值范圍,也包含它能夠進(jìn)行的操作,這就是數(shù)據(jù)類型。例如,某人的月收入是一個(gè)數(shù)據(jù),這個(gè)數(shù)據(jù)具有四則運(yùn)算的能力,可通過(guò)乘法計(jì)算出他的年收入。一個(gè)人的姓名也是一個(gè)數(shù)據(jù),顯然這個(gè)數(shù)據(jù)不能被加、減操作。因此,數(shù)據(jù)類型定義了值的范圍并確定了它能夠進(jìn)行的操作,即通過(guò)數(shù)據(jù)類型對(duì)數(shù)據(jù)的性質(zhì)進(jìn)行定義。
2.3.1基本數(shù)據(jù)類型
每種計(jì)算機(jī)語(yǔ)言都有自己的數(shù)據(jù)類型,它們的標(biāo)準(zhǔn)類型基本相同,在特殊數(shù)據(jù)類型上存在差異。VB 具有豐富的數(shù)據(jù)類型,在數(shù)值運(yùn)算和文本處理方面表現(xiàn)出很強(qiáng)的處理能力。按照使用的數(shù)據(jù)性質(zhì)進(jìn)行分類,可以把數(shù)據(jù)類型分為6類,如表2.2所示。
表2.2 VB的數(shù)據(jù)類型

2.3.2 數(shù)值類型
數(shù)值類型包括字節(jié)型、雙精度型等類型,事實(shí)上還有無(wú)符號(hào)整型、無(wú)符號(hào)長(zhǎng)整型等,以適應(yīng)不同數(shù)值處理的需要。因?yàn)樵谟?jì)算機(jī)中,數(shù)據(jù)被存放在內(nèi)存單元,其存儲(chǔ)長(zhǎng)度必然受到限制。各數(shù)值類型的數(shù)據(jù)取值范圍不同,因此選擇合適的類型能夠有效地提高處理效率。比如,能使用一字節(jié)表示的數(shù)據(jù),其處理效率肯定會(huì)比使用整型或者長(zhǎng)整型的數(shù)據(jù)效率要高。
1.字節(jié)型(Byte)
Byte類型占1字節(jié)(8位二進(jìn)制)的內(nèi)存單元,用來(lái)表示一個(gè)0~255的無(wú)符號(hào)整數(shù)。
2.短整型(Short)、整型(Integer)和長(zhǎng)整型(Long)
這三種數(shù)據(jù)類型常用于整數(shù)運(yùn)算,都是有符號(hào)數(shù),可以是正數(shù)、負(fù)數(shù)或者零。長(zhǎng)整型使用8字節(jié)(64位),整型使用4字節(jié)(32位),短整型只有2字節(jié)。VB允許數(shù)據(jù)直接加上類型符后綴定義數(shù)據(jù)的類型,或直接在數(shù)據(jù)后加L表示長(zhǎng)整型、加字母S表示短整型、加字母I表示整型,如45678&和45678L均表示45678是一個(gè)長(zhǎng)整型數(shù)。
如果要用無(wú)符號(hào)數(shù),則可以對(duì)應(yīng)地使用UShort、UInteger和ULong類型。
即使有經(jīng)驗(yàn)的程序員有時(shí)也會(huì)忽視數(shù)據(jù)類型的合理選擇。一旦超出數(shù)據(jù)類型的取值范圍,往往會(huì)導(dǎo)致溢出錯(cuò)誤,如使用Short表示了32768,這時(shí)可以改用UShort,取值范圍為0~65535。
3.浮點(diǎn)數(shù)
VB使用兩種類型表示浮點(diǎn)數(shù),允許在更大范圍內(nèi)表示帶小數(shù)的數(shù)。Single是單精度,Double是雙精度。由于表示范圍大,大數(shù)據(jù)運(yùn)算會(huì)產(chǎn)生一定的誤差,這是編程者應(yīng)預(yù)計(jì)到的。
之所以叫做浮點(diǎn)數(shù),是因?yàn)樵谶@種數(shù)據(jù)類型中,小數(shù)點(diǎn)可以在數(shù)的任何位置。實(shí)際上,它們保留了有限的有效位數(shù),如超出則改用指數(shù)表示法。Single保留7位十進(jìn)制有效位,Double保留15位。使用E代表以10為底的指數(shù)。
在表示浮點(diǎn)數(shù)時(shí),也可以在數(shù)字后加字母指定類型,此時(shí)用F表示Single類型,用R表示Double類型,如12.3456R。
注意:如果直接定義浮點(diǎn)數(shù),應(yīng)把指數(shù)符號(hào)E放在數(shù)字中間,否則無(wú)效。例如,3E2、137.E2、-2.3456789E-106是正確的表示,而E32、E-5、9ex是錯(cuò)誤的。
4.精確數(shù)據(jù)類型
Decimal數(shù)據(jù)類型存儲(chǔ)16字節(jié)的有符號(hào)數(shù),表示按10的可變冪變大或變小的96位(12字節(jié))整數(shù)。其比例因子指定小數(shù)點(diǎn)右邊的數(shù)位,范圍為0~28。比例為0時(shí),最大的可能值為:
+/-79228162514264337593543950335(正好是96個(gè)1)。
如果小數(shù)位數(shù)為28,則最大值為:
+/-7.9228162514264337593543950335
Decimal數(shù)據(jù)類型提供數(shù)字的最大數(shù)量的有效數(shù)位,最多支持29個(gè)有效數(shù)位,特別適用于需要使用大量數(shù)位但不能容忍舍入誤差的計(jì)算,如金融方面的計(jì)算。
Decimal 數(shù)據(jù)類型的默認(rèn)值為0。如果有一個(gè)變量a為Decimal 類型,要讓 a 等于79228162514264337593543950335,不能直接寫成:
a=79228162514264337593543950335
這樣系統(tǒng)會(huì)告訴你溢出,應(yīng)該寫成:
a=79228162514264337593543950335D 或 a=79228162514264337593543950335@
@是類型符,加后綴D也表示該數(shù)是Decimal數(shù)據(jù)類型的。
說(shuō)明:Decimal 不是浮點(diǎn)數(shù)據(jù)類型,存儲(chǔ)二進(jìn)制整數(shù)值,以及符號(hào)位和指定值中的哪部分為純小數(shù)的整數(shù)比例因子。因此,Decimal數(shù)字在內(nèi)存中的表示形式比浮點(diǎn)型更精確。
2.3.3 字符數(shù)據(jù)類型
“字符”是單個(gè)的,而“字符串”一般是指一個(gè)以上的字符的組合。VB中主要有Char和String兩種。
現(xiàn)在的VB使用16位Unicode編碼,Unicode的前128位(0~127)與ASCII字符集中定義的碼位相同。后面的128碼位(128~255)表示特殊字符,如拉丁字母、重音符號(hào)、貨幣符號(hào)以及分?jǐn)?shù)等。Unicode 將其余碼位(256~65535)用于表示不同種類的符號(hào),包括世界范圍的各種文本字符、音調(diào)符號(hào)以及數(shù)學(xué)和技術(shù)符號(hào)。
我們編寫的程序代碼也以字符作為基本構(gòu)造元素,所有程序都由特定含義的字符序列組合而成。當(dāng)然我們使用的中文版VS也支持中文字符,如第1章示例程序中使用的那樣。為了區(qū)別程序中的代碼字符,VB使用英文的雙引號(hào)""把那些被程序處理的字符及字符串括起來(lái)。
1.字符型(Char)
Char 數(shù)據(jù)類型表示單個(gè)字符,用2 字節(jié)保存其碼位,取值的范圍為0~65535。每個(gè)碼位表示一個(gè)Unicode字符,如"A"就是一個(gè)字符,其編碼為65。
2.字符串型(String)
String表示字符串類型。String類型字符串的字符個(gè)數(shù)可以為0到大約 20億個(gè)Unicode字符,具體取決于實(shí)現(xiàn)平臺(tái)。
字符串可以包括所有的Uncode碼中給出的符號(hào),包括字母、數(shù)字和類似于+、-、*、/、&、$的符號(hào)。下面這些都是正確的字符串示例:
"Visual Basic" (VB全稱,含空格,字符串長(zhǎng)度為12,不包括雙引號(hào)) "浙江大學(xué) 浙江杭州中國(guó)" (學(xué)校名稱,長(zhǎng)度為12,含空格) "" (空,即字符串的長(zhǎng)度為0,注意空格不代表“空”) “!” (單個(gè)字符的字符串,長(zhǎng)度為1) "0571-12345 杭州市政府熱線" (電話號(hào)碼等,長(zhǎng)度為18)
2.3.4 邏輯型與日期型
1.邏輯型(Boolean)
邏輯型是以邏輯代數(shù)發(fā)明人布爾的名字命名的數(shù)據(jù)類型,所以也叫做布爾型。對(duì)一個(gè)命題判斷要么成立要么不成立,則使用Boolean類型表示判斷結(jié)果。邏輯值只有是(True)和否(False)兩種狀態(tài),所以我們也把它叫做二值類型。
邏輯值和數(shù)值類型進(jìn)行轉(zhuǎn)換的時(shí)候,它們是非對(duì)稱的:① 數(shù)值數(shù)據(jù)轉(zhuǎn)換為布爾值時(shí),0對(duì)應(yīng)False,非0對(duì)應(yīng)True;② 布爾值轉(zhuǎn)換為數(shù)值數(shù)據(jù)時(shí),F(xiàn)alse對(duì)應(yīng)0,True對(duì)應(yīng)-1。
2.日期型(Date)
VB使用日期型數(shù)據(jù)表示日期和時(shí)間,表示范圍從0001年1月1日到9999年的12月31日,時(shí)間從午夜 12:00:00 到晚上 11:59:59.9999999。VB 使用兩個(gè)“#”把時(shí)間日期數(shù)據(jù)括起來(lái),如“#12/12/2012 11:35:35 PM#”表示日期為2012年12月12日,時(shí)間是23:35:35。
2.3.5 對(duì)象引用型
對(duì)象引用型(Object)也是VB中的一個(gè)比較特殊的類型,保存引用對(duì)象的4字節(jié)地址,可以為Object變量分配任何引用類型(字符串、數(shù)組、類等)。Object 變量還可以引用任何值類型(數(shù)值、Boolean、Char、Date等)的數(shù)據(jù)。VB中有許多對(duì)象,指定對(duì)象后的Object變量就可以再被引用。編程者可以將窗體名(當(dāng)前窗體用Me)、控件名賦值給Object變量,然后通過(guò)該變量訪問(wèn)對(duì)象的屬性等。
2.3.6 自定義數(shù)據(jù)類型
VB 6.0為用戶提供了自定義數(shù)據(jù)類型,在Visual Basic 2008中升級(jí)為結(jié)構(gòu)。Structure是一種支持成員(如方法和屬性)的類型。
Structure 語(yǔ)句可以滿足用戶的需求,把 VB 已有的數(shù)據(jù)類型重新組合或者構(gòu)造為一個(gè)新類型,同時(shí)可以在其內(nèi)定義成員方法(函數(shù))。我們將在2.4.3節(jié)中通過(guò)一個(gè)示例進(jìn)一步解釋Structure類型。
- 程序員面試算法寶典
- Wireshark Network Security
- Java面向?qū)ο蟪绦蜷_(kāi)發(fā)及實(shí)戰(zhàn)
- JavaScript前端開(kāi)發(fā)與實(shí)例教程(微課視頻版)
- Practical Game Design
- Flux Architecture
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- Angular開(kāi)發(fā)入門與實(shí)戰(zhàn)
- C語(yǔ)言開(kāi)發(fā)基礎(chǔ)教程(Dev-C++)(第2版)
- 現(xiàn)代C++編程實(shí)戰(zhàn):132個(gè)核心技巧示例(原書第2版)
- Django 3.0入門與實(shí)踐
- Machine Learning With Go
- C++ Application Development with Code:Blocks
- UX Design for Mobile
- Julia High Performance(Second Edition)