异常类与string
1、跳转语句:throw,goto(能不用就不用),return,continue(跳出本次循环),break(跳出全部循环);
2、Switch()中必须放变量,变量可为int,char,string;
3、Foreach(var v in arr){} 其中,v是代表arr的元素。
4、For(int i ; ;)可以实现加减的类型都可以代替 int i;
如: for(DateTime dt=DateTime.Parse("2010-02-01"); dt< DateTime.Parse("2010-03-31"); dt.AddDays(1))
{
Console.WriteLine(dt);
}
5、异常:
Try……catch
Try…… Finally
Try……catch……finally;
(1)Finally在任何情况下都会执行的;即使catch里面有(return);
(2)自定义异常类:
1.分层:
显示层 业务处理层 数据处理层
2.步骤:
(1) 定义异常(写项目前首先定义一个大的异常类);(2)定义业务,不符合业务的抛出异常(业务处理层);(3)使用:捕捉异常(在显示层)。
例如:
//异常类:
class BusException:Exception
{
public BusException()
{
}
public BusException(string message)
: base(message)
{
File.AppendAllText(@"F:/a.log",message+DateTime.Now+"\r\n")//记录日志;
}
}
//业务层,若出现异常,抛出
class OutMoney
{
public static double QuKuan(double temmoney ,double money)
{
if (money >= temmoney)
{
return money - temmoney;
}
else
{
throw new BusException("取款金额大于存款额金额!");
}
}
}
//显示层,捕捉异常
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入取款金额:");
double temmoney = double.Parse(Console.ReadLine());
try
{
Console.WriteLine(OutMoney.QuKuan(temmoney,4000));
}
catch(BusException e )
{
Console.WriteLine(e.Message);
}
}
}
运算符:
位运算:与,或,异或,
与遇零为零;或遇1为1;
异或同为零,求补全返转;
移位最麻烦,除头尾补零。
(左移运算将操作数左移,高位被丢弃,低位顺序补0)
String
1、两性:(1)不可变性(一旦定义,就是不可变的,如果字符串发生了变化,就生成新的字符串)(2)留用性(如果字符串相同,可能共用一个字符串)
2、由不可变性可知:多个字符串拼接时,由于是两个两个运算,中间会生成多个string,效率低,最好别这么做;
3、string 常用方法:str.GetType(),str.GetType()
str.PadLeft(20, '*') str.Remove(2) str.Replace("aa", "bbb") str.Split(' ')
str.StartsWith("aa")
string.format(“{0:c4}”,123);
datetime.now.tostring(“yyyy-MM-dd hh:mm:ss”)
4、转义字符:string str=@”F:\a\a\a.txt”;
5、stringBuilder:在System.Text命名空间下,可以对字符执行动态操作,通过维护一个char类型的数组来实现对字符串的操作;
导致;stringbuilder分配新对象有两种情况:
(1)当试图动态构造一个字符串,而它的长度又超过了事先设置的容量时;
(2)当调用 stringbuilder的tostring()方法后,又要修改该变量时;
6、string 与stringbuilder:(牺牲空间换取性能)(面试)
(1)Concat和appendformat方法都可以实现将数据追加到现有的string/stringbuilder后;
(2)string后追加字符串,是拿该字符串和追加
(3)
7、编码 万国码