數據類型
來自站長百科
數據類型在數據結構中的定義是一個值的集合以及定義在這個值集上的一組操作。 變量是用來存儲值的所在處;它們有名字和數據類型。變量的數據類型決定了如何將代表這些值的位存儲到計算機的內存中。在聲明變量時也可指定它的數據類型。所有變量都具有數據類型,以決定能夠存儲哪種數據。

java基本數據類型
數據類型出現的原因
數據類型的出現,是因為電腦內存有限。 把數據分成所需內存大小不同的數據,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。
數據類型簡介
- 根據缺省規(guī)定,如果在聲明中沒有說明數據類型,則令變量的數據類型為 Variant。Variant 數據類型很象一條變色龍— 它可在不同場合代表不同數據類型。當指定變量為 Variant 變量時,不必在數據類型之間進行轉換,Visual Basic 會自動完成各種必要的轉換。
- 如果知道變量確實總是存儲特定類型的數據,并且還聲明了這種特定類型的變量,則 Visual Basic 會以更高的效率處理這個數據。例如,存儲人名的變量最好表示成 String 數據類型,因為名字總是由字符組成。
- 除變量外,數據類型也用于其它場合。在給屬性賦值時,這個值就有數據類型;函數的參數也有數據類型。事實上,在 Visual Basic 中,凡是與數據有關的東西就與數據類型有關。
- 也可聲明任何基本類型的數組。
帶數據類型的變量
1、在使用非 Variant 變量之前,必須使用 Private、Public、Dim 或 Static 語句將變量聲明為 As type。例如,下列語句分別聲明了 Integer、Double、String 和 Currency 類型的變量:
- Private I As Integer
- Dim Amt As Double
- Static YourName As String
- Public BillsPaid As Currency
2、一個聲明語句可將多個聲明組合起來,請看下列語句:
- Private I As Integer,Amt As Double
- Private YourName As String,BillsPaid As Currency
- Private Test,Amount,J As Integer
3、如果不提供數據類型,則指定變量為缺省類型。在上例中,變量 Test 和 Amount 是 Variant 數據類型。如果由于其它編程語言的經驗使人感到同一個聲明語句中的所有變量都有相同的指定數據類型(此例中為 Integer),那么,此處的結果可能會令人感到新鮮。
幾種數據類型范圍
數據類型 | 大小 | 范圍 |
---|---|---|
整數類型 | ||
Boolean | 1bit | 0 至 1 |
Byte | 8bit | 0 至 255 |
Word | 2 字節(jié) | 0 至 65535 |
Double Word | 4 字節(jié),32bit | 0 至 4,294,967,295 |
Integer | 4 字節(jié),32bit | –2,147,483,648 至 2,147,483,647 |
Double Integer | 8 字節(jié),64bit | –9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 |
浮點類型 | ||
浮點數 | 4 位元組 | 1E-37 至 1E+37 (6 個小數位數) |
Double Float | 8 位元組 | 1E-307 至 1E+308 (15 個小數位數) |
常見的幾種數據類型簡介
Numeric
- Visual Basic 支持幾種 Numeric 數據類型— Integer(整型)、Long(長整型)、Single(單精度浮點型)、Double(雙精度浮點型)和 Currency(貨幣型)。與 Variant 類型相比,Numeric 類型占用的存儲空間通常要少。
- 如果知道變量總是存放整數(如 12 )而不是帶小數點的數字(如 3.57),就應當將它聲明為 Integer 類型或 Long 類型。整數的運算速度較快,而且比其它數據類型占據的內存要少。
Byte
- 如果變量包含二進制數,則將它聲明為 Byte 數據類型的數組。在轉換格式期間用 Byte 變量存儲二進制數據就可保留數據。當 String 變量在 ANSI 和 Unicode 格式間進行轉換時,變量中的任何二進制數據都會遭到破壞。在下列任何一種情況下,Visual Basic 都會自動在 ANSI 和 Unicode 之間進行轉換:
- 讀文件時
- 寫文件時
- 調用 DLL 時
- 調用對象的方法和屬性時
- 除一元減法外,所有可對整數進行操作的運算符均可操作 Byte 數據類型。因為 Byte 是從 0 - 255 的無符號類型,所以不能表示負數。因此,在進行一元減法運算時,Visual Basic 首先將 Byte 轉換為符號整數。
- 所有數值變量都可相互賦值,也可對 Variant 類型變量賦值。 在將浮點數賦予整數之前, Visual Basic要將浮點數的小數部分四舍五入,而不是將小數部分去掉。
String
- 如果變量總是包含字符串而從不包含數值,就可將其聲明為 String 類型。
Private S As String
- 然后可將字符串賦予這個變量,并用字符串函數對它進行操作。
S = "Database" S = Left (S,4)
- 按照缺省規(guī)定,String 變量或參數是一個可變長度的字符串,隨著對字符串賦予新數據,它的長度可增可減。 也可以聲明字符串具有固定長度。可用以下語法聲明一個定長字符串:
String * size
- 為了聲明一個長度為 50 字符的字符串,可用下列語句:
Dim EmpName As String * 50
- 如果賦予字符串的字符少于 50 個,則用空格將 EmpName 的不足部分填滿。如果賦予字符串的長度太長,已不能成為定長字符串,則 Visual Basic 會直接截去超出部分的字符。
- 因為定長字符串用空格填充尾部多余的空間,所以在處理定長字符串時可發(fā)現,刪除空格的 Trim 和 RTrim 函數是很有用的。
- 可將標準模塊中的定長字符串聲明為 Public 或 Private。在窗體和類模塊中,必須將定長字符串聲明為 Private。
Boolean
- 若變量的值只是“true/false”、“yes/no”、“on/off”信息,則可將它聲明為 Boolean 類型。Boolean 的缺省值為 False。在下面的例子中,blnRunning 是 Boolean 變量,存儲簡單的 yes/no 設置。
Dim blnRunning As Boolean If Recorder.Direction = 1 Then blnRunning = True End if
Date
- Date 和 Time 值既可包含在特定的 Date 數據類型中,又可包含在 Variant 變量中。一般的 Date 特性適用于這兩種類型。
- 當其它數值數據類型轉換為 Date 時,小數點左邊的值表示 Date 信息,小數點右邊的值則代表 Time。午夜為 0,正午為 0.5。負數表示公元 1899 年 12 月 31 日之前的 Date。
Object
- Object 變量作為 32 位(4 個字節(jié))地址來存儲,該地址可引用應用程序中或某些其它應用程序中的對象??梢噪S后(用 Set 語句)指定一個被聲明為 Object 的變量去引用應用程序所識別的任何實際對象。
Dim objDb As Object Set objDb = OpenDatabase ("c:\Vb5\Biblio.mdb")
- 在聲明對象變量時,請試用特定的類,而不用一般的 Object(例如用 TextBox 而不用 Control,或者象上面的例子那樣,用 Database 取代 Object)。運行應用程序之前,Visual Basic 可以決定引用特定類型對象的屬性和方法。因此,應用程序在運行時速度會更快。在“對象瀏覽器”中列舉了特定的類。
- 當使用其它應用程序的對象,并在“對象瀏覽器”中的“類”列表中列舉對象時,不要用 Variant 或一般的 Object,而應聲明對象。這樣可確保 Visual Basic 能夠識別引用的特定類型對象,在運行時解決引用問題。
Variant
- Variant 變量能夠存儲所有系統(tǒng)定義類型的數據。如果把它們賦予 Variant 變量,則不必在這些數據的類型間進行轉換; Visual Basic 會自動完成任何必要的轉換。例如:
Dim SomeValue '缺省為 Variant。 SomeValue = "17" 'SomeValue包含 "17"(雙字符的串)。 SomeValue = SomeValue - 15 '現在, SomeValue 包含數值 2。 SomeValue = "U" & SomeValue '現在, SomeValue 包含 "U2" (雙字符的串)。
- 不必過多關注 Variant 變量中數據的類型就可對 Variant 變量進行操作,但須避免落入陷阱。
- 如果對 Variant 變量進行數學運算或函數運算,則 Variant 必包含某個數。
- 如果正在連接兩個字符串,則用 " & " 操作符而不用 " + " 操作符。
- 除了可以像其它標準數據類型一樣操作外,Variants 還包含三種特定值:Empty,Null 和 Error。
- 有時需要知道是否已將一個值賦予所創(chuàng)建的變量。在賦值之前,Variant 變量具有值 Empty。值 Empty 是異于0、零長度字符串 ("") 或 Null 值的特定值。可用 IsEmpty 函數測試 Empty 值:
If IsEmpty (Z) Then Z = 0
- 當 Variant 變量包含 Empty 值時,可在表達式中使用它;將其作為 0 或零長度字符串來處理,這要根據表達式來定。
- 只要將任何值(包括 0、零長度字符串或 Null)賦予 Variant 變量,Empty 值就會消失。而將關鍵字 Empty 賦予 Variant 變量,就可將 Variant 變量恢復為 Empty。
Null和Error值
- Variant 數據類型還可包含一特定值:Null。
- Null通常用于數據庫應用程序,表示未知數據或丟失的數據。 由于在數據庫中使用 Null 方法,Null 具有某些唯一的特性:
- 對包含 Null 的表達式,計算結果總是 Null。于是說 Null 通過表達式“傳播”;如果表達式的部分之值為 Null,那么整個表達式的值也為 Null。
- 將 Null 值、含 Null 的 Variant 變量或計算結果為 Null 的表達式作為參數傳遞給大多數函數,將會使函數返回 Null。
- Null 值經由返回 Variant 數據類型的內在函數傳播。
- 也可用 Null 關鍵字指定 Null 值。
Z = Null
- 也可用 IsNull 函數測試 Variant 變量是否包含 Null 值。
If IsNull (X) And IsNull (Y) Then Z = Null Else Z = 0 End If
- 如果將 Null 值賦予 Variant 以外的任何其它類型變量,則將出現可以捕獲的錯誤。而將 Null 值賦予 Variant 則不會發(fā)生錯誤,Null 將通過包含 Variant 變量的表達式傳播(盡管 Null 并不通過某些函數來傳播)。可以從任何具有 Variant 返回值的函數過程返回 Null。
- 在 Variant 中,Error 是特定值,指出已發(fā)生的過程中的錯誤狀態(tài)。但是,與其它類型錯誤不同,這里并未發(fā)生正常的應用程序級的錯誤處理。因此,程序員或應用程序本身可根據 Error 值進行取舍。利用 CVErr 函數將實數轉換成錯誤值就可建立 Error 值。
VB中的數據類型
- Byte 1 個字節(jié) 0 到 255
- Boolean 2 個字節(jié) True 或 False
- Integer 2 個字節(jié) -32,768 到 32,767
- Long(長整型) 4 個字節(jié) -2,147,483,648 到 2,147,483,647
- Single(單精度浮點型) 4 個字節(jié) 負數時從 -3.402823E38 到 -1.401298E-45;正數時從 1.401298E-45 到 3.402823E38
- Double(雙精度浮點型) 8 個字節(jié) 負數時從 -1.79769313486232E308 到-4.94065645841247E-324;正數時從4.94065645841247E-324 到 1.79769313486232E308
- Currency(變比整型) 8 個字節(jié) 從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807
- Decimal 14 個字節(jié) 沒有小數點時為 +/-79,228,162,514,264,337,593,543,950,335,而小數點右邊有 28 位數時為 +/-7.9228162514264337593543950335;最小的非零值為 +/-0.0000000000000000000000000001
- Date 8 個字節(jié) 100 年 1 月 1 日 到 9999 年 12 月 31 日
- Object 4 個字節(jié) 任何 Object 引用
- String(變長) 10 字節(jié)加字符串長度 0 到大約 20 億
- String(定長) 字符串長度 1 到大約 65,400
- Variant(數字) 16 個字節(jié) 任何數字值,最大可達 Double 的范圍
- Variant(字符) 22 個字節(jié)加字符串長度 與變長 String 有相同的范圍
- 用戶自定義(利用 Type) 所有元素所需數目 每個元素的范圍與它本身的數據類型的范圍相同。
數據類型轉換
Visual Basic 提供了幾種轉換函數,可用來將值轉換成特定數據類型。例如,用 CCur 函數將值轉換成 Currency 類型:
- PayPerWeek = CCur (hours * hourlyPay)
轉換函數 將表達式轉換成
- Cbool Boolean
- Cbyte Byte
- Ccur Currency
- Cdate Date
- CDbl Double
- Cint Integer
- CLng Long
- CSng Single
- CStr String
- Cvar Variant
- CVErr Error
在個編程語言中,所表達的數據類型轉換方式各有不同,例如,在java中,數據類型轉換是這樣來描述的:
public class Base{ public static final String FOO = "foo"; public static void main(String[] args){ Base b = new Base(); Sub s = new Sub(); System.out.print(((Base)s).FOO); } } class Sub extends Base{public static final String FOO = "bar";}