方法
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回(存在返回值)
}
修饰符:可选比如public
返回值类型:无返回值用void
方法名:驼峰 自己取
参数类型:形式参数,用来定义作用的
实际参数,实际调用传递的参数
方法体:方法内包含的语句
main方法尽量保持简洁
通过写其他方法
在main的方法里去调用其他方法
方法的调用
-
如有return 直接赋值调用
比如 int max = 方法名(赋值)
比大小方法调用实例:
package com.wang.method;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请分别输入a,b:");
int x = scanner.nextInt();
int y = scanner.nextInt();
int max = max(x,y);
if (max!=0) {
System.out.println("max=" + max);
}else{
}
scanner.close();
}
public static int max(int a,int b){
int result = 0;
if (a>b){
result = a;
}else if (a<b){
result = b;
}else{
System.out.println("相等");
return 0;//在此结束方法
}
return result;//return可以结束方法
}
}
java 是直传递
方法的重载
重载就是在一个类中,有相同的函数名称,但参数类型不同的函数
方法重载的规则:
- 方法的名称必须相同
- 参数列表必须不同(个数不同,类型不同或者排列顺序不同)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
命令行传递参数
在cmd命令行里面运行java
javac java文件得到class文件
在src里面 逐步回溯 java com.等等.java文件
可变参数
- 在方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能声明一个可变参数,它必须是方法的最后一个参数。任何的普通参数必须在他之前声明
package com.wang.method;
public class Demo3 {
public static void main(String[] args) {
Demo3 demo3 = new Demo3();//用demo3来代表Demo3类
demo3.test(1);//demo3代表的Demo3类中能找到test这个方法
}
public void test(int... i){
System.out.println(i[0]);
}
}
理解里面如何去调用test方法
递归
A方法调用A方法
递归结构包括两个部分
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法
不体现递归求阶乘代码:
package com.wang.method;
import com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入求阶乘的值:");
int m = scanner.nextInt();
int i = test(m);
scanner.close();
}
public static int test(int i ){
int sum = 1;
while(i>=1){
sum = sum * i;
i--;
}
System.out.println("该数的阶乘为:"+sum );
return i;
}
}
体现递归求阶乘代码:(好好理解)
package com.wang.method;
import com.sun.xml.internal.bind.v2.runtime.output.StAXExStreamWriterOutput;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需求的数字:");
int i = scanner.nextInt();
System.out.println("该数的阶乘为"+test(i));
scanner.close();
}
public static int test(int i){
if (i==1){
return 1;
}else {
return i*test(i-1);
}
}
}
边界条件:边界 该题中为 test(1)