天天看點

C# - 變量資料類型 009

作者:源丁程式設計

變量

變量來源于數學,是計算機語言中能儲存計算結果或能表示值的抽象概念,變量可以通過變量名通路

簡單來說就是在程式的運作過程可以改變的量,是程式在運作時臨時存儲資料的地方

C#變量就是C#程式在記憶體中運作時可操作的那塊空間區域的名字

C#是一種強類型語言,每個變量都有一個特定的資料類型,編譯器會實時檢查所有在代碼中聲明的資料類型是否合法,如果是非法的資料類型則會報錯,代碼也會編譯失敗

C#變量總結:1)存在于記憶體中 2)其值可以改變 3)可以通過變量名通路使用 4)每個變量都有一個特定的資料類型

變量資料類型

資料類型:C#提供一組标準的内置類型;是C#中的保留關鍵字(VS中以藍色字型顯示)

資料類型:就像是一個模闆,聲明哪種類型的變量就是通過.Net架構在記憶體中開辟一塊此模闆類型的空間,用于暫時存儲程式運作時變量的資料

每一種C#的資料類型在.Net架構内都有對應命名空間的類或結構,C#代碼中聲明的資料類型是.Net架構内對應命名空間類或結構的别名,是以可以進行互換

資料類型中包含的資訊

1)類型變量所需的存儲空間

指在記憶體中開辟這種類型變量需要多大空間;如byte占據1個位元組;int 占據 4個位元組

2)可以表示的最大值和最小值

指這種類型的變量中可以存儲資料的範圍;如byte類型變量的存儲範圍為0-255

3)繼承的基類型;

主要是為繼承基類的屬性,方法等;比如繼承自父類或接口中的屬性與方法等

資料類型的分類1:

變量的資料類型可分為數值類型與非數值類型;數值類型又分為整形與非整形

整形的數值類型:byte(位元組) short(短整形) int(整形) long(長整形)

非整形的數值類型:float(單精度) double(雙精度) decimal(貨币型)

非數值類型:string(字元串) char(字元) bool(布爾) object(對象)

資料類型分類2:值類型與引用類型(之後再說)

變量的聲明方式

就是資料C#中聲明變量的文法規則(規則必須遵守,規範可守可不守,大多數都遵守)

方式1 資料類型 變量名;

//1 隻聲明了變量  
int num1;
//2 先聲明,後指派
int num2;  num2=2;           

方式2 資料類型 變量名=變量值; "="表示指派即右側的值指派給左側變量

int num3=3;           

方式3 資料類型 變量名1, 變量名2,變量名3;(隻能對同一類型使用此方式)

//方式3 表示聲明了同一類型的變量a,b,c
int a,b,c; //隻聲明變量未指派
int a=1,b=3,c=5; //聲明變量并對其指派了           

記憶體中開辟變量

C# - 變量資料類型 009

變量在記憶體的示意圖

//聲明變量  
byte a; //告訴記憶體開辟一塊byte類型的空間,該空間的别名是a,記憶體中實際存儲位址是0X001
a=0;//将右側的值指派給左側的變量,就是将資料0暫時存儲在别名為a的空間内
a=3;//重新指派将會覆寫之前的0; 此時a的值為3           

變量:就是記憶體中開辟的那塊空間(0X001給CPU用的); 變量名:就是那塊空間的别名(a給程式員用的) 資料類型:就是那塊空間的類型(byte) 變量值:存儲在那個空間内的資料(0)

不同類型的變量在記憶體中開辟的空間大小會不一樣,是以可存儲資料的範圍就不一樣

C# - 變量資料類型 009

檢視變量在記憶體中的位址

變量的使用規則 1) 先聲明 2)指派 3)才能使用

int num5;
Console.WriteLine(num5);//報錯:使用了未指派的變量
int num6=6;//先将第二行注釋掉,否則會編譯失敗
Console.WriteLine(num6);//輸出 6
//其他的資料類型都遵循此規則           

整形數值類型

byte(位元組型)

1)對應.Net中的System.Byte 類 使用變量名.GetType()方法擷取

2)占據記憶體1個位元組 使用sizeof(資料類型)方法

3)可指派範圍 0-255 使用 資料類型.MinValue 資料類型.MaxValue

C# - 變量資料類型 009

位元組型變量

以下三種類型不再編寫代碼截圖,照byte方式即可

short(短整形或者小整形)

1)對應.Net的 System.Int16 2)占據2個位元組 3)指派範圍 -32,768 - 32,767

int(整形)

1)對應.Net的 System.Int32 2)占據4個位元組 3)指派範圍-2,147,483,648 - 2,147,483,647

long(長整形或大整形)

1)對應.Net的 System.Int64 2)占據8個位元組 3)指派範圍大約在-2^19-2^19次方

整形數值類型注意事項:

1)C#中聲明資料類型的關鍵字等同于相應的.Net的類型名稱

2)整數類型有一定的指派範圍,超出範圍的資料是無法表示的

3)整數類型的變量不能為其賦帶有小數的值

C# - 變量資料類型 009

類型互換;指派超圍

非整形數值類型

float(單精度或單精度浮點型)

1)對應.Net的 System.Single 2)占據4個位元組 3)精确到小數點的6-7位并且會四舍五入

4)指派範圍大約在1.5X10^-45 ~ 3.4X10^38 5)可指派整數與小數

C# - 變量資料類型 009

單精度聲明,指派,取值

注意:為單精度變量指派時必須加f;以f結尾表示數值變量表示單精度

double(雙精度或雙精确度浮點型).

1)對應.Net的 System.Double 2)占據8個位元組 3)精确到小數點的16-17位

4)指派範圍大約在±5.0X10^-324 ~±1.7X10^308 5)可指派整數與小數

C# - 變量資料類型 009

雙精度

decimal(貨币型)

主要用于對财務,貨币,航天等需要精确度較高的領域

1)對應.Net的 System.Decimal 2)占據12個位元組 3)精确到小數點的28-29位

4)指派範圍大約在±1.0 × 10E−28 to ±7.9 × 10E28 5)可指派整數與小數

C# - 變量資料類型 009

貨币型

注意:指派時必須加上m結尾

貨币型(decimal)與浮點型(float與double)的差別:

1 貨币類型具有更高的精度和更小的範圍,更适合于财務和貨币計算

2 貨币類型精确度高指派範圍比較小

注意:非整形數值類型的資料更在意的是其精确度,而不是其範圍,可以為其賦整形與非整形數值類型的值

非數值類型

string(字元串)

1)對應.Net的 System.String 2)指派時必須帶有雙引号 3)有空字元串

C# - 變量資料類型 009

字元串類型

注意:為字元串類型變量指派必須加上""(雙引号)

char(字元)

1)對應.Net的 System.Char2)指派時必須帶有單引号且隻能指派一個字元(包含中文)

3)有,值為一個空格的變量,沒有,沒有任何字元的變量

C# - 變量資料類型 009

字元型;ch3是值為一個空格的變量

注意:為字元類型變量指派必須加上"(單引号)且隻能賦一個字元的值,哪怕其值是一個空格的值;沒有不含任何字元的變量

bool(布爾)

1)對應.Net的 System.Boolean

2)隻能指派 true或false 或表達式結果為這兩種值

C# - 變量資料類型 009

布爾型;将1小于3比較的結果值指派給b3

object(對象)

1)對應.Net的 System.Object 2)可以為此變量賦上面類型之中任何類型的值

牛叉的原因:object這個類型,是CLR定義的最基礎的類型,也被戲稱"上帝類",因為C#中所有類型的資料都可以轉換為object類型(會發生裝箱/拆箱,消耗性能,除非必要,不要随意賦其他類型值)

C# - 變量資料類型 009

object類型

雖然前6個的值都是6,由于指派的類型不同,是以表示的是不同類型的資料

obj1有可能的類型: byte,short,int,double obj2:表示字元串的6 obj3:表示字元6

obj4:表示單精度的6 obj5:表示貨币型的6

小結

1)了解變量在程式與記憶體中的含義

2)變量的聲明方式,在聲明變量時,.Net機制對記憶體的操作

3)資料類型的分類,各類型聲明時注意事項

繼續閱讀