6月29日课堂笔记
值类型和引用类型的区别
引用类型分配在堆里
值类型分配在栈里
1,将一个值类型变量赋给另一个值类型的变量时,将赋值包含的值。引用类型变量的赋值只是赋值对对象的引用,而不是赋值对象的本身
2,值类型不可能派生出新的类型,所有的值类型均隐式派生自system.valuetype.但与引用类型相同的是,结构也可以实现接口。引用类型派生自object类
3,值类型不可能包含null,然而可控类型功能允许将null赋给值类型
4,每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值
============================
装箱和拆箱是什么
装箱:从值类型接口转换到引用类型
拆箱:从引用类型转换到值类型
object obj=null;引用类型
obj=1; 把值类型转换成引用类型,装箱
int i1=(int)obj;拆箱
===============
什么是异常
异常是指:程序运行时所遇到的自身逻辑错误或外部错误(如
所访问的数据库没启动,硬件损坏等)所引起的程序非正常运行。
所以异常的跑出是有条件的。如数组越界了才会抛出OutOfRangeException异常。
包含系统定义的异常和自定义的异常
==============
多态的实现有哪几种方式
父类实现 抽象类 接口
============
GC
.net应用程序作为一个托管的运行机制。CLR里面有一个极其重要的部分就是垃圾回收
刚刚生成的对象都是0代
回收一次,那些没有被回收的对象叫编程1代
当有不需要的对象和代满了才开始进行回收
每一代都有一个内存大小,内存的大小根据对象的大小决定
0代,1代,2代 超出2代就异常
===========================
如何抛出异常 异常是个类,对象
throw new Exeption("异常信息");
异常抛出到了哪里
异常抛给调用他的方法
如果该方法没有处理异常,就再往上抛
finally 处理释放资源
====================================
string
字符串的定义方法以及数组使用
string str="我是一个字符串";
char[] chars={'1','2','3'};
两个构造函数
string str1=new string(chars);
string str2=new string('c',3);
字符串有个很特殊的使用方式,当做数组进行遍历
for(int i=0;i<str,Length;i++)
{
Console>WriteLine(str[i]);
}
此时不能改变数组里的值,需要转换成char数组才能转换,字符串的不变性
char[] chs=str.ToCharArray();
=============
常见的字符串属性与方法(参考msdn和老师发的文档)
比较
string str1="C#";
string str2="c#";
将字符串统一再比较。。。由于不可变性,是重新生成一个字符串,要有变量接受
string s1=str1.ToUpper();//大写方法//小写方法ToLower
string s2=str2.ToUpper();
-----------------------------------
int res=string.Compare(str1,str2);
str1>str2 1
str1=str2 0
str1<str2 -1
string.Compare(str1,str2,true);
true表示不区分大小写
-------------------------
bool isRirht=str1.Equals(str2,StringComparison,OrdinalIgnoreCase); 不区分大小写的比较
bool isRirht=str1.Equals(str2);
-------------------
字符串修整
去掉两端的空格
string str=" 123 " ;
string str1=str.Trim();
去掉字符
string stemp="{1223}";
string temp=stemp.Trim('{','}');
扩展的方法 TrimEnd TrimStart
--------------------------
合并与分割
合并
string[] strs={"密西",“卡卡”,“拉拉”};
string str=string.Join("|",strs);
分割
string path=@"C:\Windows\system32\1.dll";
string[] paths=path.Split('\\');
str.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
-------------------------------
字符串的查找
string str=@"D:\Music\孙燕姿_专辑\孙燕姿_天黑黑.mp3“;
bool isRirht=str.Contains("孙燕姿");
查找的字符串在哪里
int index=str.IndexOf("孙燕姿");
int index=str.IndexOf("孙燕姿",10);
默认情况下从字符串开始进行查找,找到第一个结束,返回位置
可以使用第二个参数,表示从字符串的第几个字符开始查找
如果没有找到返回-1;
str.IndexOfAny(char[] anyOf,startIndexof);
示例
string str="1mm2mn3nd45ff6";
char[] nums={'1','2','3','4','5','6'}
int index=str.IndexOfAny(nums,0);
示例LastIndexOf
string path =@"D:\Music\孙燕姿_专辑\孙燕姿_天黑黑.mp3";
int index=path.LastIndexOf("孙燕姿");
-----------------
求子字符串
//Substring()
//1,string str.Substring(index)
//从index开始到结束的所有部分
int index=str.LastIndexOf('\\');
string temp=path.Substring(index+1);
//2,string str.Substring(index,Length)
string data="2012年6月29日" ;
int index=data.IndexOf('月');
string temp=data.Substring(index+1,2);
----------------------------
字符串的插入 移除和挑换
//Insert 插入
string="012345";
str=str.Insert(3,"我");
//Remove(index,length) 移除 Remove(index)默认移除index后的所有字符
str=str.Remove(3,1);
//替换 Replace("原字符串","新字符串")
string temp=data.Replace("年","-").("月","-").Replace("日","-");
----------------------
判断开始与结尾
string path=@"D:\123\344\54\22.Mp3";
bool b=path.EndsWith(.Mp3);
bool b=path.StartsWith(string str);
-------------------
格式化字符串 string.Format();
string str=string.Format("{0}+{1}",1,2);
================
StringBuilder 动态字符串,可变的。字符串拼接
//Append (追加)
//ToString()
// AppendLine (换行)
//AppendFormat (格式化)
StringBuilder sb=new StringBuilder();
=============================
string temp = string.Empty;//表示空字符串,只读
========================
Equals 是可以重写的
class MyClass
{
public int num;
public override bool Equals(object obj)
{
MyClass m = obj as MyClass;
if (m == null)
{
return false;
}
return this.num == m.num;
}
public static bool Equals(MyClass m1, MyClass m2)
{
return m1.num == m2.num;
}
}
Main函数
string str = "123";
string str2 = "123"; // 字符串拘留池(驻留池)
//int i = 0;
//MyClass m1 = new MyClass();
// bool isRight = str.Equals(str2);
//MyClass m1 = new MyClass();
//m1.num = 10;
//MyClass m2 = new MyClass();
//m2.num = 10;
// bool isRight = m1.Equals(m2);
// bool isRight = MyClass.Equals(m1, m2);
// ==
char[] chs = { '1', '2', '3' }
str = new string(chs);
// str2 = new string(chs);
bool isRight = str == str2;
}