方法和语句块
语句块: 即是放在花括号中的语句,不可以多次调用。
方法:即是加了名字的语句块,可以反复调用,用来完成特定功能的的定片段。
根据需要进行调用,在方法后面可以添加参数,也可以有返回值。普通的方法需要通过对象来进行调用。
方法的组成:
- 形参:定义方法是写的 *
- 实参:是调用方法时实际用的参数
- 返回值:可有可无。return有两个作用,1.结束方法的运行,2.返回一个值
- 返回值类型:
注意事项:
1.实参的数据类型,顺序,数目必须和形参相匹配。
2.return语句第终止方法的运行并指定要返回的数据。
3.java中进行方法调用中传递实参时,遵循值传递的原则(传递的都是数据的副本)
4.基本类型传递的是该数据的copy值。
5.引用数据类型传递的是该对象引用的copy值,但是指向的是同一个对象。
带标签的break和continue
public class Testlf {
public static void main(String[] args) {
outer:for(int i=100;i<150;i++) {
for(int j=2;j<i/2;j++) {//超过一半的数就已经除不尽了
if(i%j==0) {
continue outer;//如果是continue的话,只结束本层循环,
//如果需要跳出外层循环的话,可以添加标签
}
}
System.out.println(i);
}
}
}
方法的重载
实际是完全不同的方法,只不过是名字相同。
构成重载的条件: 形参类型,个数,顺序不同
只有返回值不同不构成重载
public class Testlf {
public static void main(String[] args) {
}
public static int add(int a,int b) {
int sum=a+b;
return sum;
}
public static int add(int a,int b,int c) {
int sum=a+b+c;
return sum;
}
public static double add(double a,double b) {
double sum=a+b;
return sum;
}
/ * //只有返回值不同,不构成重载
public static double add(int a,int b) {
double sum=a+b;
return sum;
}
//只有参数名称不同,不构成重载
public static int add(int a1,int b2) {
double sum=a+b;
return sum;
}*/
}
递归结构
即是自己调用自己
递归的定义包含两个方面:
- 递归头:也即是递归的结束条件,什么时候不调用自身的方法。
- 递归体:即是什么时候需要自己调用自己。
这用调用会无休止的调用下去,知直到把系统的资源都占满了,最后抛出异常
public class Testlf {
public static void main(String[] args) {
a();
}
static void a() {
System.out.println("a");
a();
b();
}
static void b() {
System.out.println("b");
}
}
用递归求阶乘的方法
public class Testlf {
public static void main(String[] args) {
System.out.println(mutiply(10));
}
static long mutiply(int n) {
if(n==1)//递归头
return 1;
else
return n*mutiply(n-1);//递归体
}
}
利用循环的方法求阶乘:
public class Testlf {
public static void main(String[] args) {
System.out.println(mutiplyloop(10));
}
static long mutiplyloop(int n) {
long result=1;
while(n>1) {
result*=n*(n-1);
n=n-2;
}
return result;
}
}
注意事项:
任何可以用递归解决的问题,都可以使用迭代的方法解决。但是递归的方法既消耗时间,也占用空间