一、值类型,引用类型

1、值类型:所有数值类型是值类型(int,float,double,枚举,布尔类型,结构,引用的地址,...等数值型值)

A、所有的值类型是储存在栈里面。

B、值类型的赋值,就是值的拷贝。

2、引用类型:对象,字符串,object,数组,...等有复杂模型的值

A、引用类型的值储存在堆里面的,栈里面储存的是它的引用地址。

B、引用类型的赋值实际上就是地址的拷贝。

3、类成员的调用方法

A、要去调用一个雷里面的非静态成员(属性【也叫字段】,方法),就要通过累的一个实例对象来调用。

B、类里面的静态成员(用static标注的成员)是只需通过类直接调用。

4、由类生成实例化对象时内存状态

A、类生成实例化对象时将所有非静态成员全部生成在堆里面,成员中的方法是储存在方法区,堆里面只存储方法的地址。

B、类中的静态成员单独储存在静态区中,所以不需要实例化直接通过类区调用。

C、当去实例化一个类的对象的时候,首先会在堆里面检索该类型的对象是否存在,如果存在就拷贝一份来做新的实例。

** 实例化对象时类里面的值类型和引用类型都会储存在堆里面。

5、装箱、拆箱

值类型转换成引用类型叫装箱。

如:int i=2; //值类型变量i

Object j=(object)i; //把值类型变量i转换成object类型变量j,此时j里面的值为"2"。

引用类型转换成值类型叫拆箱。

如:Object j="123"; //在object变量j里储存字符型数据123

int I=(int)j; //把object变量j转换成int类型变量i,此时i里面的值为123。

6、变量类型

全局变量:类里面在方法外面的变量

局部(成员)变量:在方法里面的变量

静态变量:用static标注的全局变量或局部(成员)变量

7、显示转换和隐式转换

隐式转换没有性能损耗,显示转换有性能损耗。

8、【:?】和【??】的用法

int i = a > b ? 10:20; //当a>b时i取值10,否则i取值20。

string s = a ?? b //当a为null时s取b的值。

二、字符串

1、字符串转换成字符数组

string = "sdfhiudshfoiuhfoiuewhf"

char[] a = s.ToCharArray(); //ToCharArray时C#中获得字符数组的方法,在jq中是Split来获得字符数组。

2、Compare方法

strA < strB 则返回-1(负值)

strA = strB 则返回0

strA > strB 则返回1(正值)

** 字符串比较时比较的是同一位置的ASCII码的大小。

3、Equals方法

判断两个字符串是否相同,如果相同返回值为true,否则为false。

4、定位字符串

StartWith/EndWith 判断一个字符串是否以一个字符串开头/结尾,返回值true/false

indexOf/LastindexOf 某个指定的字符或字符串第一次(最后一次)出现的位置

5、截取字符串

string.Substring(起始位置[,截取长度]) //截取string中起始位置开始的指定长度。

string s1 = "abcdfeghijklmn";

string s = s1.Substring(3, 2); //起始位置是从0开始的,结果是【df】。

6、插入和填充字符串

A、insert方法

string str1 = "hello ";

string str2 = "hi world";

string str3 = str2.Insert(3, str1); //结果是【hi hello world】。

B、PadLeft/PadRigth方法

string str1="hi";

string str2=str1.PadLeft(4,'@') //目标字符串长度不足时用指定字符[@]来填充左边,结果是【@@hi】。

string str2=str1.PadRigth(4,'@') //目标字符串长度不足时用指定字符[@]来填充右边,结果是【hi@@】。

7、删除和剪切字符串Remove方法

A、Remove(起始位置,删除的数量) //在字符串的起始位置开始删除指定数量字符。

string str2 = "hi world";

string str3 = str2.Remove(0, 3); //结果是world。

B、Trim、TrimStart、TrimEnd方法

Char[] str1={'@','#','$',' '};

string str2=" @China$# ";

string str3=str2.Trim(str1); //在str2中删除所有开始和结尾字符满足str1数组中符合的字符,如果没有

指定str1就默认去掉前后空格,本例结果是【Chain】。

C、CopyTo方法

string str1="China";

char[]str2=new char[100];

str1.CopyTo(0,str2,0,3); //CopyTo的参数:要复制的字符的起始位置,目标数组,指定目标数组中开始

存放的位置,要复制的字符个数。本例结果是数组的0,1,2元素中存有Chi。

D、替换字符串

string str1="hello";

string str2=str1.Replace("ll","r"); //str1中的【ll】字符串用字符串【r】来替换。本例结果是【hero】。

E、格式化字符串

string.Format()   //将指定字符串中的每个格式项替换为相应对象的值的文本等效项。

Console.WriteLine("{0,10} {1,10}\n", "Decimal", "Hex");

//{0,10}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,省略第二个参数则按替代内容

长度显示。本例结果是【 Decumal Hex】

string str1= String.Format("{0,10:G}: {0,10:X}", -32768);

//{0,10:G}中第一个参数表示第0位置的替代项,第二个参数是为该项留出10个字符位,冒号后面的参数是指定数据

格式:G是字符串型值,F是保留小树后两位的字符串型数字,D是10进制数,X是16进制数。本例结果是【 -32768 8000】

三、StringBuilder

1、字符串拼凑

耗费比较大的资源。

2、StringBuilder

StringBuilder sb =new StringBuilder();

sb.Append("aaa");

sb.Append("bbb"); //结果string sb中内容变为aaabbb。

优质内容筛选与推荐>>
1、oracle修改账户锁定和密码的命令
2、【BZOJ】【1150】【CTSC2007】数据备份Backup
3、python自省指南
4、css链接样式的修改
5、[接口测试 - 基础篇] 05 的xml解析


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号