变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念,变量可以通过变量名访问
简单来说就是在程序的运行过程可以改变的量,是程序在运行时临时存储数据的地方
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(长整形)
正整形:ushort(正短整形) uint(正整形) ulong(正长整形) 只取大于等于 0 的值
非整形的数值类型: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
ushort(正短整形)
1)对应.Net的 System.UInt16 2)占据2个字节 3)赋值范围 0 - 32,767
int(整形)
1)对应.Net的 System.Int32 2)占据4个字节 3)赋值范围-2,147,483,648 - 2,147,483,647
uint(正整形)
1)对应.Net的 System.UInt32 2)占据4个字节 3)赋值范围 0 - 2,147,483,647
long(长整形或大整形)
1)对应.Net的 System.Int64 2)占据8个字节 3)赋值范围大约在-2^19-2^19次方
ulong(正长整形)
1)对应.Net的 System.UInt64 2)占据8个字节 3)赋值范围大约在 0-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)有,值为一个空格的变量,没有,没有任何字符的变量
注意:为字符类型变量赋值必须加上"(单引号)且只能赋一个字符的值,哪怕其值是一个空格的值;没有不含任何字符的变量
bool(布尔)
1)对应.Net的 System.Boolean
2)只能赋值 true或false 或表达式结果为这两种值
object(对象)
1)对应.Net的 System.Object 2)可以为此变量赋上面类型之中任何类型的值
牛叉的原因:object这个类型,是CLR定义的最基础的类型,也被戏称"上帝类",因为C#中所有类型的数据都可以转换为object类型(会发生装箱/拆箱,消耗性能,除非必要,不要随意赋其他类型值)
虽然前6个的值都是6,由于赋值的类型不同,所以表示的是不同类型的数据
obj1有可能的类型: byte,short,int,double obj2:表示字符串的6 obj3:表示字符6
obj4:表示单精度的6 obj5:表示货币型的6
小结
1)理解变量在程序与内存中的含义
2)变量的声明方式,在声明变量时,.Net机制对内存的操作
3)数据类型的分类,各类型声明时注意事项