變量
變量來源于數學,是計算機語言中能儲存計算結果或能表示值的抽象概念,變量可以通過變量名通路
簡單來說就是在程式的運作過程可以改變的量,是程式在運作時臨時存儲資料的地方
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; //聲明變量并對其指派了
記憶體中開辟變量
變量在記憶體的示意圖
//聲明變量
byte a; //告訴記憶體開辟一塊byte類型的空間,該空間的别名是a,記憶體中實際存儲位址是0X001
a=0;//将右側的值指派給左側的變量,就是将資料0暫時存儲在别名為a的空間内
a=3;//重新指派将會覆寫之前的0; 此時a的值為3
變量:就是記憶體中開辟的那塊空間(0X001給CPU用的); 變量名:就是那塊空間的别名(a給程式員用的) 資料類型:就是那塊空間的類型(byte) 變量值:存儲在那個空間内的資料(0)
不同類型的變量在記憶體中開辟的空間大小會不一樣,是以可存儲資料的範圍就不一樣
檢視變量在記憶體中的位址
變量的使用規則 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
位元組型變量
以下三種類型不再編寫代碼截圖,照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)整數類型的變量不能為其賦帶有小數的值
類型互換;指派超圍
非整形數值類型
float(單精度或單精度浮點型)
1)對應.Net的 System.Single 2)占據4個位元組 3)精确到小數點的6-7位并且會四舍五入
4)指派範圍大約在1.5X10^-45 ~ 3.4X10^38 5)可指派整數與小數
單精度聲明,指派,取值
注意:為單精度變量指派時必須加f;以f結尾表示數值變量表示單精度
double(雙精度或雙精确度浮點型).
1)對應.Net的 System.Double 2)占據8個位元組 3)精确到小數點的16-17位
4)指派範圍大約在±5.0X10^-324 ~±1.7X10^308 5)可指派整數與小數
雙精度
decimal(貨币型)
主要用于對财務,貨币,航天等需要精确度較高的領域
1)對應.Net的 System.Decimal 2)占據12個位元組 3)精确到小數點的28-29位
4)指派範圍大約在±1.0 × 10E−28 to ±7.9 × 10E28 5)可指派整數與小數
貨币型
注意:指派時必須加上m結尾
貨币型(decimal)與浮點型(float與double)的差別:
1 貨币類型具有更高的精度和更小的範圍,更适合于财務和貨币計算
2 貨币類型精确度高指派範圍比較小
注意:非整形數值類型的資料更在意的是其精确度,而不是其範圍,可以為其賦整形與非整形數值類型的值
非數值類型
string(字元串)
1)對應.Net的 System.String 2)指派時必須帶有雙引号 3)有空字元串
字元串類型
注意:為字元串類型變量指派必須加上""(雙引号)
char(字元)
1)對應.Net的 System.Char2)指派時必須帶有單引号且隻能指派一個字元(包含中文)
3)有,值為一個空格的變量,沒有,沒有任何字元的變量
字元型;ch3是值為一個空格的變量
注意:為字元類型變量指派必須加上"(單引号)且隻能賦一個字元的值,哪怕其值是一個空格的值;沒有不含任何字元的變量
bool(布爾)
1)對應.Net的 System.Boolean
2)隻能指派 true或false 或表達式結果為這兩種值
布爾型;将1小于3比較的結果值指派給b3
object(對象)
1)對應.Net的 System.Object 2)可以為此變量賦上面類型之中任何類型的值
牛叉的原因:object這個類型,是CLR定義的最基礎的類型,也被戲稱"上帝類",因為C#中所有類型的資料都可以轉換為object類型(會發生裝箱/拆箱,消耗性能,除非必要,不要随意賦其他類型值)
object類型
雖然前6個的值都是6,由于指派的類型不同,是以表示的是不同類型的資料
obj1有可能的類型: byte,short,int,double obj2:表示字元串的6 obj3:表示字元6
obj4:表示單精度的6 obj5:表示貨币型的6
小結
1)了解變量在程式與記憶體中的含義
2)變量的聲明方式,在聲明變量時,.Net機制對記憶體的操作
3)資料類型的分類,各類型聲明時注意事項