a. 数据类型 i. 值类型:是一种由类型的实际值表示的数据类型,存储在栈内的存储空间中,由于编译器编译后将源代码中的值类型变量直接对应到唯一的存储空间上,直接访问该存储空间,故值类型的数据具有较快地存取速度。 1. 数值类型:继承于 Object ,所有类型都隐含地声明了一个公共的无参数的构造函数,称为“默认构造函数”,默认构造函数返回一个初始值为零的实例。 a. 整数:支持 8 种整型 sbyte、short、byte、ushort、int、uint、long、ulong,这 8 类型通过其占用存储空间的大小以及是否有符号来存储不现极值范围的数据。 b. 浮点数:支持 2 种浮点数类型:float 和 double,两种差别在于取值范围和精度不同。double 的精度大于 float c. 小数:十进制的类型:decimal ,decimal 的精度最高,与浮点类型之间不存在隐式或显示转换 1. 布尔类型(bool):用来表示“真(true)”和“假(false)”两个概念的,与其他类型之间不存在任何转换 2. 字符类型(char):包括数字字符、英文字符、表达式符号等,按照国际公认的标准,采用 Unicode 字符集,使用时用“单引号('')”表示 3. 结构类型(struch):是一组相关信息组合成的单一实体 a. 作用:通常用于表示较为简单或者较少的数据,其实际应用意义在于使用结构类型可以节省使用类和内存的占用,因为结构类型没有如同类对象所需的大量额外的引用 4. 枚举类型(eunm):是由一组特定的常量构成的一种数据结构,系统把相同类型、表达固定含义的一组数据作为一个集合放到一起形成新的数据类型 a. 注意:为枚举类型的元素所赋值的类型限于 long、int、short、byte 等整数类型 b. 与结构类型的区别:结构类型的变量值是由各个成员的值组合而成的,而枚举类型的变量在某一时刻只能取枚举中某一个元素的值 ii. 引用类型:引用类型的数据并不驻留在栈内存中,而是存储于堆内存中,即是在堆内存中分配内存空间直接存储所包含的值,而在栈内存中中存放定位到存储具体值的索引。当访问一个具有引用类型的数据时,需要到栈内存中检查变量的内容,而该内容指向堆中的一个实际数据。 1. 类类型:类是创建对象的模板 a. 语法:访问修饰符 class 类名{ //类的主体 } b. 方法:用来描述类的行为 i. 语法:访问修饰符 返回类型 方法名(参数列表){ //方法的主体 } a. 属性:用来描述类的特征 a. 对象类型:对象是类的一个具体实例,万物皆对象 a. 字符串类型(String):是字符类型的集合,继承于 Object 类,使用时用“双引号("")”表示 a. 数组类型:是包含若干个相同类型数据的集合,数组的数据类型可以是任何类型 i. 一维数组:数组的维数决定了相关数组元素的下标数,一维数组只有一个下标 1. 声明:数组类型[] 数组名; 2. 两种初始化方式: a. 在声明数组时进行初始化,如:int[] array={1,2,3,4}; b. 使用 new 关键字进行初始化,第一个下标为0,如:int[] array= new int[4]{1,2,3,4}; array[0]=1; ii. 多维数组: 1. 声明:如二维数组是“数组类型[,] 数组名;”,三维数组是“数组类型[,,] 数组名;” 2. 例子说明:定义一个二维数组 int[,] array={{2,4},{3,5},{4,6}} ,那么 array[1,0] = 3; b. 接口类型 c. 代理类型 a. 数据类型转换 i. 隐式转换:对于任何数值类型A,只要其取值范围完全包含在类型B 的取值范围内,就可以隐式转换为类型B,也就是说,int 可以转成float或double,float也可 以转换成double ii. 显式转换:取值范围大的类型转换为取值小范围小的类型,如:double 转为 int iii. Parse()方法:将字符串类型转换为数值类型 iv. Convert类:任何基本类型之间的相互转换,如:Convert.ToInt32() 转换为整型等方法 v. 装箱:是指将值类型转换为引用类型的过程,具体操作为:首先分配一个对象实例,然后将值类型的值复制到该实例中,装箱前后不是同一个实例,对于引用类型来说,装箱前后都是同一个实例 vi. 拆箱:是指将引用类型转换为值类型的过程,具体操作为:拆箱之前,要先检查该对象实例是否给定值类型的一个装过箱的值,然后将值从实例中赋值出来 b. 值传递与引用传递的对比 i. 值传递:是将变量的值复制一份传递给方法,使用得该方法的形参和实参的值相同。在调用的方法中修改形参也只是对实参复制吕的数据作更新,并没有真正改变实参的值 ii. 引用传递:是将要传递的对象的引用复制给方法的形参,使得被调用的方法直接对引用对象进行更改,会影响实参原来的值 a. 引用类型作为参数传递,其值的修改将会保留。以引用方式传递值类型的数据,其值的修改也将会保留,直接传递值类型数据,对它的修改不会被保留 b. 静态成员:是一种特殊的成员,不属于类的某一个具体的实例,特点:在第一次访问类前被初始化,直到程序退出才会释放,对于类的所有实例来说都是唯一的 i. 语法:Class 类名{ public static 数据类型 变量名; public 返回值 方法名 (参数列表){ //方法体 } } a. 只能由该类的类名来访问 b. 只能调用静态成员