变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念,变量可以通过变量名访问
简单来说就是在程序的运行过程可以改变的量,是程序在运行时临时存储数据的地方
C#变量就是C#程序在内存中运行时可操作的那块内存区域的名字
C#是一种强类型语言,每个变量都有一个特定的数据类型,编译器会实时检查所有在代码中声明的数据类型是否合法,如果是非法的数据类型则会报错,代码也会编译失败
C#变量总结:1)存在于内存中2)其值可以改变3)可以通过变量名访问使用4)每个变量都有一个特定的数据类型
变量数据类型
数据类型:C#提供一组标准的内置类型;是C#中的保留关键字(VS中以蓝色字体显示)
数据类型:就像是一个模板,声明哪种类型的变量就是通过.Net框架在内存中开辟一块此模板类型的空间,用于暂时存储程序运行时变量的数据
每一种C#的数据类型在.Net框架内都有对应命名空间的类或结构,C#代码中声明的数据类型是.Net框架内对应命名空间类或结构的别名,因此可以进行互换
数据类型中包含的信息
1)类型变量所需的存储空间
指在内存中开辟这种类型变量需要多大空间;如byte占据1个字节;int占据4个字节
2)可以表示的最大值和最小值
指这种类型的变量中可以存储数据的范围;如byte类型变量的存储范围为0-
3)继承的基类型;
主要是为继承基类的属性,方法等;比如继承自父类或接口中的属性与方法等
基本数据类型的分类1
/p>
变量的数据类型可分为数值类型与非数值类型;数值类型又分为整形与非整形
整形的数值类型:byte(字节)short(短整形)int(整形)long(长整形)
正整形:ushort(正短整形)uint(正整形)ulong(正长整形)只取大于等于0的值
非整形的数值类型
loat(单精度)double(双精度)decimal(货币型)
非数值类型:string(字符串)char(字符)bool(布尔)object(对象)
基本数据类型分类2:值类型与引用类型(之后再说)
变量的声明方式
就是数据C#中声明变量的语法规则(规则必须遵守,规范可守可不守,大多数都遵守)
方式1数据类型变量名;
//1只声明了变量intnum1;//2先声明,后赋值intnum2;num2=2;
方式2数据类型变量名=变量值;"="表示赋值即右侧的值赋值给左侧变量
intnum3=3;
方式3数据类型变量名1,变量名2,变量名3;(只能对同一类型使用此方式)
//方式3表示声明了同一类型的变量a,b,cinta,b,c;//只声明变量未赋值inta=1,b=3,c=5;//声明变量并对其赋值了内存中开辟变量
变量在内存的示意图
//声明变量bytea;//内存开辟一块byte类型的空间,该空间的别名是a,内存中实际存储地址是0Xa=0;//将右侧的值赋值给左侧的变量,就是将数据0暂时存储在别名为a的空间内a=3;//重新赋值将会覆盖之前的0;此时a的值为3
变量:就是内存中开辟的那块空间(0X给CPU用的);变量名:就是那块空间的别名(a给程序员用的)数据类型:就是那块空间的类型(byte)变量值:存储在那个空间内的数据(0)
不同类型的变量在内存中开辟的空间大小会不一样,所以可存储数据的范围就不一样
查看变量在内存中的地址
变量的使用规则1)先声明2)赋值3)才能使用
intnum5;Console.WriteLine(num5);//报错:使用了未赋值的变量intnum6=6;//先将第二行注释掉,否则会编译失败Console.WriteLine(num6);//输出6//其他的数据类型都遵循此规则整形数值类型
byte(字节型)
1)对应.Net中的System.Byte类使用变量名.GetType()方法获取
2)占据内存1个字节使用sizeof(数据类型)方法
3)可赋值范围0-使用数据类型.MinValue数据类型.MaxValue
字节型变量
以下三种类型不再编写代码截图,照byte方式即可
short(短整形或者小整形)
1)对应.Net的System.Int)占据2个字节3)赋值范围-32,-32,
ushort(正短整形)
1)对应.Net的System.UInt)占据2个字节3)赋值范围0-32,
int(整形)
1)对应.Net的System.Int)占据4个字节3)赋值范围-2,,,-2,,,
uint(正整形)
1)对应.Net的System.UInt)占据4个字节3)赋值范围0-2,,,
long(长整形或大整形)
1)对应.Net的System.Int)占据8个字节3)赋值范围大约在-2^19-2^19次方
ulong(正长整形)
1)对应.Net的System.UInt)占据8个字节3)赋值范围大约在0-2^19次方
整形数值类型注意事项:
1)C#中声明数据类型的关键字等同于相应的.Net的类型名称
2)整数类型有一定的赋值范围,超出范围的数据是无法表示的
3)整数类型的变量不能为其赋带有小数的值
类型互换;赋值超围
非整形数值类型
float(单精度或单精度浮点型)
1)对应.Net的System.Single2)占据4个字节3)精确到小数点的6-7位并且会四舍五入
4)赋值范围大约在1.5X10^-45~3.4X10^)可赋值整数与小数
单精度声明,赋值,取值
注意:为单精度变量赋值时加f;以f结尾表示数值变量表示单精度
double(双精度或双精确度浮点型).
1)对应.Net的System.Double2)占据8个字节3)精确到小数点的16-17位
4)赋值范围大约在±5.0X10^-~±1.7X10^)可赋值整数与小数
双精度
decimal(货币型)
主要用于对财务,货币,航天等需要精确度较高的领域
1)对应.Net的System.Decimal2)占据12个字节3)精确到小数点的28-29位
4)赋值范围大约在±1.0×10E?28to±7.9×10E)可赋值整数与小数
货币型
注意:赋值时加上m结尾
货币型(decimal)与浮点型(float与double)的区别
/p>
1货币类型具有更高的精度和更小的范围,更适合于财务和货币计算
2货币类型精确度高赋值范围比较小
注意:非整形数值类型的数据更在意的是其精确度,而不是其范围,可以为其赋整形与非整形数值类型的值
非数值类型
string(字符串)
1)对应.Net的System.String2)赋值时必须带有双引号3)有空字符串
字符串类型
注意:为字符串类型变量赋值必须加上""(双引号)
char(字符)
1)对应.Net的System.Char2)赋值时必须带有单引号且只能赋值一个字符(包含中文)
3)有,值为一个空格的变量,没有,没有任何字符的变量
字符型;ch3是值为一个空格的变量
注意:为字符类型变量赋值必须加上"(单引号)且只能赋一个字符的值,哪怕其值是一个空格的值;没有,不含任何字符的变量
bool(布尔)
1)对应.Net的System.Boolean
2)只能赋值true或false或表达式结果为这两种值
布尔型;将1小于3比较的结果值赋值给b3
object(对象)
1)对应.Net的System.Object2)可以为此变量赋上面类型之中任何类型的值
牛叉的原因
bject这个类型,是CLR定义的最基础的类型,也被戏称"上帝类",因为C#中所有类型的数据都可以转换为object类型(会发生装箱/拆箱,消耗性能,除非必要,不要随意赋其他类型值)
object类型
虽然前6个的值都是6,由于赋值的类型不同,所以表示的是不同类型的数据
obj1有可能的类型:byte,short,int,doubleobj2:表示字符串的6obj3:表示字符6
obj4:表示单精度的6obj5:表示货币型的6
小结
1)理解变量在程序与内存中的含义
2)变量的声明方式,在声明变量时,.Net机制对内存的操作
3)数据类型的分类,各类型声明时注意事项