方法的重载和递归

2017-12-06  本文已影响0人  TALY

不可变类型string

string 类型表示一个字符序列(零个或更多 Unicode 字符)。 string 是 .NET Framework 中 String的别名。尽管string 是引用类型,但定义相等运算符(== 和 !=)是为了比较 string 对象的值(而不是引用)。 这使得对字符串相等性的测试更为直观。

但是这个string是只读的 无法修改其数组中的元素;

[] 运算符可以用于对 string 的各个字符的只读访问。

字符串方法

Contains()

返回一个值,该值指示指定的子串是否出现在此字符串中。

例子:

string name="LanOukeji";

if(name.Contains("Lanou")){

console.writeline("包含");

}else{console.writeline("不包含");}

IndexOf(String)

报告指定字符串在此实例中的第一个匹配项的从零开始的索引。(是连续的匹配)

例子:

string name="LanOukejiLanLanLan";

int a=name.IndexOf("Lan")

//这里会输出第一个匹配的lan的第一个字母l的数组位置。

LastIndexOf(String)

报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。

string name="LanOukejiLanLanLan";

int a=name.LastIndexOf("Lan")

//这里会输出最后一个匹配的lan的第一个字母l的数组位置。

PadLeft(Int32)

返回一个新字符串,该字符串通过在此实例中的字符左侧填充空格来达到指定的总长度,从而实现右对齐。

string newname=name.padleft(20);//右对齐位数不足用空格补满

Remove(Int32,Int32)

返回指定数量字符在当前这个实例起始点在已删除的指定的位置的新字符串。

string newname=name.remove(3,3);//从下标3开始删除3个字符

如果“,”后不写数字则默认后面都删掉

console.writeline(str);

Replace(String,String)

返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串。

string str=name.replace("lan","蓝");

Split(Char[])

返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组的元素分隔)。

string[] strarr=name.Split(' ');

for(int i=0;i< strarr.length ;i++){

console.writeline(strarr[i]);

}

StringBuilder

String对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。如果需要多次修改,String得开销是非常大滴!

于是有了System.Text.StringBuilder类。

StringBuilder对象是动态对象,长度是可变的,如果需要多次修改字符串,使用StringBuilder可以大大提升效率。

首先需要申明usingSystem.Text;

装箱与拆箱

把值类型转换成引用类型,称为装箱

打印结果为10,a已经被隐式的转成了object类型//obj是所有类的基类;

把引用类型转换成值类型,称为拆箱

打印结果为10,把obj强制转换成int类型并赋值给b

重载

方法重载实际上是方法名重载,即支持多个不同的方法采用同一名字。

例如:int Abs(int n){}

float Abs(float f){}

double Abs(double d){}

实现方法的重载

首先,方法名必须相同,

其次,参数必须不同,至少是以下两种情况之一:

参数表中对应的参数类型不同;

参数表中参数个数不同;

递归

方法实现体内再次调用方法本身。这种调用方式称为递归

调用。

在计算机中阶乘就可以使用递归调用。5!

注意:递归一定要有出口。

实例:

1.斐波那契数列

第n个数字等于前两个数字的和:N=(N-1)+(N-2)

public int Fibonacci (int n)

{

if(n<0) return -1;

if(n==0) return 0;

if(n==1) return 1;//这几个if表示的是最初的几项可能的情况

return Fibonacci (n-1)+Fibonacci(n-2);

}

2.阶乘

public int Factorial (int n)

{

int sum=0;

if(n==0) {return 1;}

else{sum = n * Factorial (n - 1);}

return sum;

}

上一篇下一篇

猜你喜欢

热点阅读