目录
一、方法
概念:代码的封装,将复用的代码放到块中,通过调用的形式调取
组成:方法调用,方法实现
优势:结构清晰易于复用
1.无参数无返回值
注意事项:方法与方法之间平级,不能嵌套使用
示例:
public class Fun {
public static void main(String[] args) {
System.out.println("锄禾日当午");
print();
System.out.println("汗滴禾下土");
print();
System.out.println("谁知盘中餐");
print();
System.out.println("粒粒皆辛苦");
print();//print下面一行要用两个方法,因为有两个public他们是同级的要用{}区分开
}
public static void print() {
for(int i=1;i<=7;i++) {
System.out.print("-");//不能加ln,加了就是换行
}
System.out.println();//这里是每一行完了之后的回车
}
}
2.有参数无返回值
为什么要带参数?
参数提升了方法的复用性
public class Args {
public static void main(String[] args) {
System.out.println("锄禾日当午");
print(10,'*');//数字表示实际参数
System.out.println("汗滴禾下土");
print(15,'&');
System.out.println("谁知盘中餐");//‘’是单个字符,并且要用,隔开
print(20,'@');
System.out.println("粒粒皆辛苦");
print(25,'$');//print下面一行要用两个方法,因为有两个public他们是同级的要用{}区分开
}
int Val;//Val表示形式上的参数
public static void print(int Val,char f) {//这里要用,隔开
for(int i=1;i<=Val;i++) {
System.out.print(f);//不能加ln,加了就是换行
}
System.out.println();//表示回车
}
}
3.有参数有返回值
示例1:
public class Return {
public static void main(String[] args) {
String sum = add("佛祖","保佑");
System.out.println("结果:"+sum);
System.out.println(add("永无","BUG"));//字符串都要大写String,并且要带双引号
}
public static String add(String a,String b) {//add前面要写返回值类型,整数就是int类型,字符串就是string类型
return a+b;//该运算法则就在return里面改
}
}
示例2:
public class return0 {
public static void main(String[] args) {
int sum = add(5,6);
System.out.println("和:"+sum);
System.out.println("和:"+add(2,3));//字符串都要大写String,并且要带双引号
}
public static int add(int a,int b) {//add前面要写返回值类型,整数就是int类型,字符串就是string类型
return a+b;//该运算法则就在return里面改,这是返回值
}
}
注意事项:
要在合理区分整数类型和字符串类型的使用区别
三、return的使用
1.注意事项
一个方法中只有一个return;除非有条件判断,每个出口都需要return,有多少个出台就有多少个return
一个方法只能完成一种功能
示例:
public class return1 {
public static void main(String[] args) {
System.out.println(jiShu(8));
}
public static boolean jiShu(int i) {
if(i%2==1) {
return true;
}else {
return false;//if里面有两个出口,所以有两个return
}
}
}
2.无返回值下使用return
没有返回值下使用return时,return不能带值
示例1:
public class return3 {
public static void main(String[] args) {
for(int u=1;u<=10;u++) {
if(u==4) {//如果使用<=则无法显示结果,为什么?
//break;跳出for循环,则结果为1,2,3,main方法
return;//跳出方法体,则结果为1,2,3
}
System.out.println(u);
}
System.out.println("main方法");
}
}
示例2:
计算输入数字的阶乘
public class return4 {
public static void main(String[] args) {
System.out.println(n(5));
}
public static int n(int i) {
if(i==1) {
return 1;
}
return i*n(i-1);
}
}
四、多级调用
public class test {
public static void main(String[] args) {
System.out.println("从m1开始");
m1();
System.out.println("完毕");
}
public static void m1() {
System.out.println("m1执行了");
m2();
}
public static void m2() {
System.out.println("m2执行完毕了");
}
}
五、递归方法
是指自己调用自己,且要有退出的出口,如果没有出口就是死递归,类似于循环
示例:
使用递归完成斐波拉契数列
0 1 1 2 3 5 8 13 21......
public class test2 {
public static void main(String[] args) {
for(int i =0;i<10;i++){
System.out.print(f(i)+" ");
}
}
public static int f(int n) {
if(n==0||n==1) {
return n;
}
return f(n-1)+f(n-2);
}
}