类型转换CAST:
将字符串转换成“数值类型” (int、foat、doube)
int.Parse(string str)、int.TryParse(string str,out int n)推荐使用后面这个
doube.Parse(string str)、doube.TryParse(string str,out doube d)
Parse()转换失败报异常,TryParse()转换失败不报异常
is与as直接类型转换:
if(p is Student){Student stu=(Student)p;}
CR会进行两次类型检查if(检查一次){再检查一次}
Student stu=p as Student;//推荐,效率高于第一种,如果转换失败返回nu,而不会报异常。
类型转换Convert:
Convert考虑数据意义的转换;Convert是一个加工、改造的过程
异常处理的一般代码模式:
try{ …可能发生异常的代码… }
catch{ …对异常的处理… }
finay{ …无论是否发生异常都会执行的代码,代码清理、资源释放等… }
异常处理代码的其他几种形式:
•try → 多个catch → 一个finay
•try→(1个或多个catch),多个catch的顺序问题。没有finay
•try→finay(只能有一个),没有catch也可以
注意点:
•发生异常后,try块中,异常代码后的代码不会执行
•finay块中的代码,无论是否发生异常都会执行
•finay中不能写return语句
•try中有return语句,finay也会执行
•即便没有catch,finay中的代码也会执行,但finay之后的代码则不会
Exception ex 异常也是对象,封装了异常发生时的一些信息
Exception 类主要属性:Message、StackTrace、InnerException(*)
扔出自己的异常,扔:throw,抓住:catch
建议:通过逻辑判断(if-ese)减少异常发生的可能性!
在多级方法嵌套调用的时候,如果发生了异常,则会终止所有相关方法的调用,并且释放相关的资源。
值类型均隐式派生自System.VaueType
•数值类型、boo、结构、枚举
•查看I,隐式继承自VaueType
引用类型派生自System.Object
•字符串、
数组、类、接口等
•查看I隐式继承自Object
引用类型变量的赋值只
复制对对象的引用
值类型变量赋值会
拷贝一个副本
值传递:普通的参数传递
引用传递:ref或out,传递的是变量的地址
值类型:值传递、引用传递
引用类型:引用传递
params:可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组
ref:传递的是一个地址,可以把值传递强制改为引用传递
•参数在传递之前必须赋值
•应用场景:内部对外部的值进行改变
out:让函数可以输出多个值
•在方法中必须为out参数赋值
•传递之前不需要赋值,即使赋值了也不能在方法中使用
•一般用在函数有多个返回值的场所
![](https://i-blog.csdnimg.cn/blog_migrate/8c693bf70c63dec8e35414f9e20f92d8.jpeg)
字符串特性
不可变性,示例:ToUpper();由于字符串是不可变的,所以每次修改字符串都是创建了一个单独的字符串副本(又拷贝了一个字符串),画图演示
字符串池:更高效的利用内存;当程序中有多个相同的字符串常量时,这些字符串都指向内存中的同一个字符串,这种特性叫做:字符串池
字符串池不会造成混乱,是因为:字符串具有不可变性
string:字符串类型
字符串可以看成字符数组,但是在循环时不可以更改,因为不可变特性
属性ength :获得字符串中字符的个数
例:”aA我你他”→5
方法IsNuOrEmpty():静态方法,判断为nu或者为””
方法ToCharArray() :将string转换为char[]
方法Toower():将所有字母变为小写
方法ToUpper():将所有字母变为大写
string:字符串类型
字符串可以看成字符数组,但是在循环时不可以更改,因为不可变特性
属性ength :获得字符串中字符的个数
例:”aA我你他”→5
方法IsNuOrEmpty():静态方法,判断为nu或者为””
方法ToCharArray() :将string转换为char[]
方法Toower():将所有字母变为小写
方法ToUpper():将所有字母变为大写
方法Equas() :比较两个字符串是否相同;忽略大小写的比较,使用参数StringComparation
方法Contains():是否包含
方法IndexOf() :如果没有找到对应的数据,返回-1
方法astIndexOf() :如果没有找到对应的数据,返回-1
方法Substring() : 2个重载,截取字符串
方法Spit() :分割字符串
方法Join() :静态方法
方法Format () :静态方法
方法Repace() :替换,一次性全部替换
方法Trim() :2个方法的重载
注意:对字符串的操作一定要用变量接收返回值,因为字符串是不能变的,每次都是构建一个新的字符串
StringBuider
高效的字符串操作
当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作
在需要对字符串执行重复修改的情况下,为个体创建新的 String 对象相关的系统开销可能会非常大。 如果要修改字符串而不创建新的对象,则可以使用 System.Text. StringBuider 类
StringBuider != String//将StringBuider转换为String用ToString();
StringBuider仅仅是拼接字符串的工具,大多数情况下还需要把StringBuider转换为String
•StringBuider sb = new StringBuider();
•sb.Append();//追加字符串
•sb.ToString();//把StringBuider转换为字符串。
•sb.Insert();
•sb.Repace();
Equas方法
比较两个对象是否为同一个对象?
为什么字符串的Equas和别的不一样?
• string的Equas方法判断的是字符串的内容是否相同(重写了Object中的Equas方法)
•object中的Equas方法是判断对象的地址是否相同
查看string类的==运算符,内部调用的也是Equas
在自定义类型中重写此方法,用于判断两个对象是否相同