四时宝库

程序员的知识宝库

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(长整形)

正整形: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)数据类型的分类,各类型声明时注意事项

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接