概述
我们编写的程序主要是与数据打交道的,数据有多种类型,例如:学生考试成绩都有分数,分数是用小数表示的,如90.5分。再如学生的中文名是由汉字组成的,英文名是由字母组成的,这些都是文本,属于字符串类型。
数据类型
C#中的数据类型分2大类:值类型和引用类型。值类型是存储在内存的栈上,引用类型存储在堆上。
值类型
C#中的值类型也称为基本数据类型,值类型在内存的栈上存储,存取效率比较高,性能好。
值类型是使用struct定义的,如图 所示:
struct表示结构,这也说明,在C#中结构也是值类型
。另外,C#中的枚举也是值类型。
- 整数类型:
整型只能用来存储整数,默认值是0
。C#中的整型类型有:
- byte:
占1字节(8位)内存空间
,存储0-255
之间的正整数,对应于System.Byte
结构。
byte num1 = 200;
- short:
占2字节(16位)内存空间
,存储-32,768 到 32,767,对应于System.Int16结构,short也称为短整型。
short num2=32767;
- int:
占4字节(32位)内存空间
,存储-2,147,483,648 到 2,147,483,647,对应于System.Int32结构。Int是默认的整数类型。
int num3 = -2147483648;
- long:占8字节(64位)内存空间,存储-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,对应于
System.Int64结构
。long存储的整数范围最大,但也消耗内存,所以在选择时要注意,够用即可。long也称为长整型
。
long num4 = 3000000;
- 浮点类型:
浮点类型用来存储小数的,默认值是0.0
。有两个浮点类型:
- float:用来存储
单精度小数
,范围是±1.5e−45 到 ±3.4e38,最大精确到7位小数
。对应于System.Single结构。赋值时要在后面加上f。
float f1 = 1.1234567f;
- double:用来存储
双精度小数
,范围是±5.0e−324 到 ±1.7e308,最大精确到15-16位
。double是默认的浮点类型
。对应于System.Double结构
。使用时要在后面加上d
,也可省略d。
double d1 = 0.987654321d;
- 布尔类型:
布尔类型
使用bool
表示,占1字节存储空间,只能存储两个值true(真)或false(假)
,不能是别的值。对应于System. Boolean结构
。
bool b1 = true;
bool b2 = false;
货币类型:decimal,精度28位。后面要加m
。
引用类型
在C#中引用类型是存储在内存的堆上,使用引用地址来访问。引用类型要使用new关键字来实例化对象。
如:我们在第1单元提到的System.Text命名空间下的StringBuilder类型就是一个引用类型,使用时,要使用new实例化一个对象:
StringBuilder sBuilder = new StringBuilder()
另外,还有一个常用的类型string类型,用来存储字符串,使用双引号括起来
,string类型也是引用类型
。如:string s1 = “ABC123”;
常用的引用类型有:字符串string、数组、类
。
常量
例如:圆周率的值,是一个固定值。在程序执行期间其值不可发生改变的量,称为常量
定义
常量的定义必须使用const关键字来定义
。语法如下:
const 类型 常量名 = 值;
定义的常量必须要初始化,也就是赋值,否则是要报错的。
变量
C#中的变量是指在程序执行过程中其值可以发生改变的量,称为变量
,而常量是不变的。
定义
定义(声明)一个变量是由一个类型(如int类型)和跟在后面的一个变量名(变量名遵守标识符的规则)组成,定义的变量以分号结束。
//定义变量
int intA;
double doubleA;
float floatA;
string strA;
bool bA;
变量名的第一个字母都要小写,后面其它的单词第1个字母大写。
初始化和赋值
在C#中,定义的变量必须初始化才可以使用,否则会报错。
例如:我们预定酒店,先预定,但还不能使用,必须付款之后才可入住。
变量的初始化就是给变量赋值一个初始值
,在C#中给变量赋值要使用=号。=称为赋值号`。如:
int intA = 0;
变量初始化之后就可以参与运算了。如:
int intB = intA * 100;
在此行代码中,将intA的值乘以100之后再赋值给intB变量。将=右边的值赋给左边的变量。右边的值也可以是其它的变量。如:
int intA = 0;
int intC = intA;
Var关键字的使用
Var关键字是C# 3.5推出的定义变量的类型,称为类型推断。用来推断变量的类型。C#中所有的类型都可以使用var来表示:
//var可以用来定义所用类型的变量
//使用int定义的变量
//int x1 = 100;
//使用var定义的变量
var x1 = 100;
//使用string定义的变量
//string str1 = "abc";
//使用var定义的变量
var str1 = "abc";
全局变量和局部变量
在类范围内定义的变量是全局变量,全局变量可以在整个类范围内使用。
在方法内定义的变量是局部变量,局部变量只能在定义的方法内使用。
数据类型转换
C#中的数据类型转换有2种:隐式转换和显式转换,显式转换也称 为强制类型转换,隐式转换也称为自动转换
。
如:
int intD = 100;
//隐式转换,范围小的数据包含在范围大的数据中。
double doubleD = 100;
//强制转换
//使用()
double doubleE = 123;
int intE = (int)doubleE;
//使用Convert()方法
intE = Convert.ToInt32(doubleE);
在进行强制类型转换时要注意,如果转换的数据范围超出了目标数据范围,则会报错。
在进行强制类型转换时要注意,如果转换的数据范围超出了目标数据范围,则会报错。
凡是使用Convert进行转换时,都是强制类型转换
,要注意源数据与目标数据类型的范围。
ToString()方法的使用
ToString()方法是微软已经封装好的方法,用来快速转换字符串类型。
//转换为字符串
string strB = intA.ToString();
装箱和拆箱
值类型—隐式转换—引用类型(装箱)
引用类型---显示转换---值类型(拆箱)
Object(中文是对象)类型是引用类型,是所有数据类型的根。
如下:
int intF = 100;
//装箱
object oF = intF;
//拆箱
int intF1 = (int)oF;
枚举类型
枚举类型的定义
枚举类型的使用