二.值类型和引用类型
2.1 值类型:所有的数值类型都是值类型(short int long float double ...),枚举,布尔类型,结构
2.2 引用类型:对象 ,字符串,object,数组
2.2.1 引用类型的值是储存在堆里面的,栈里面储存的只是它的引用地址.
2.2.2 引用类型的赋值,实际上就是地址的拷贝
2.3 要去调用一个类里面的非静态成员(字段,方法),需要通过类的一个对象去调用
要去调用一个类里面的静态成员,只需要通过类去调用即可。
2.4 当实例化一个类的对象的时候,堆里面会将类里面的所有的非静态成员(变量,方法)生成。
2.5 当去实例化一个类的对象的时候,首先会在堆里面检索该类的对象是否存在,如果存在就会拷贝一份
2.6 当去实例化一个对象的时候,类里面所有的成员(静态或非静态,值类型或引用类型)都是储存在堆里面
三.装箱和拆箱
3.1 装箱:值类型转换为引用类型
int i=10;
string s=i.tostring();
拆箱:引用类型转换为值类型
string s="10";
int i=convert.toint32(s);
3.2 数据类型转换
隐式转换:低精度转为高精度,直接转
int i=123;
Double b=i;
显式转换:高精度转为低精度,必须指明要转换的目标类型,由于数据的差异,有可能丢失部分数据
double x=1223.4;
int a;
a=(int)x;
3.3 ??
a=b??c ----> b为null吗,为null则a=c不为null则a=b
string(一)
一.字符串
1.1 字符串转变为数组
string s="asdfghk"
char[] a=s.tochararray();
1.2 str.Length表示字符串里面字符的个数。
1.3 字符串对象一旦被创建,这个对象就不能被修改。
二.常用方法
2.1 equals:判断两个字符串是否相同, 如果相同返回值为true,否则为false
console.writeline(string.equals("aa","bb"));
2.2 当一个类是一个静态类的时候,类里面的所有成员都是静态的
2.3 定位字符串
StartWith/EndWith 判断一个字符串是否以一个字符串_开头(结尾),返回值true/false
indexOf/LastindexOf 某个指定的字符或字符串第一次(最后一次)出现的位置
2.4 截取字符串 Substring
2.5 插入和填充字符串
2.5.1 insert方法
string str1 = "hi";
string str2 = "world";
string str3=str1.Insert(1,str2);
2.5.2 PadLeft/PadRigth方法
string str1=”hi”;
string str2=str1.PadLeft(4,’@’); -------left 填充到左边,right填充到右边
Console.WriteLine(str2);
结果为:@@hi
2.6 删除和剪切字符串Remove方法
2.6.1 Remove(开始删除的位置,删除的数量)
2.6.2 Trim
1.去除掉前后空格
2.去除特殊字符
Char[] str1={‘@’,’#’,’$’};
string str2=”@China$#”;
string str3=str2.Trim(str1);
Console.WriteLine(str3)
结果为China
2.6.3 TrimStart(去掉前面的空格),TrimEnd(去掉后面的空格)
2.6.4 CopyTo方法
string str1=”China”;
char[] str2=new char[100];
str1.CopyTo(0,str2,0,3);//要复制的字符(str1)的起始位置,目标数组(str2),指定目标数组中开始存放的位置,要复制的字符个数
2.7 替换字符串
string str1=”hello”;
string str2=str1.Replace(“ll”,”r”);
Console.WriteLine(str2);
2.8 format 将内容传到字符串里面去
string.format("年龄是{0},姓名是{1}",a,b);