-
方法是语句的结合,他们在一起执行一个功能
-
方法包含于类和对象中
-
方法在程序中被创建,在其他地方被引用
-
原则: 一个方法只完成一个功能
-
类似于其它语言的函数,完成特定功能的代码
-
方法所有部分: 修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
-
方法调用
调用方法:对象名.方法名(实参列表)
调用方式:
-
当方法返回一个值的时候,方法调用常被当做一个值。
int larger =max(30,40);
-
如果方法返回值是void,方法调用一定是一条语句
System.out.println("hello,world");
-
值传递(java)引用传递
package method; public class Demo02 { public static void main(String[] args) { int sum = sum(0); System.out.println(sum); } public static int sum ( int result) { for (int i = 0; i <= 100; i++) { result+=i; } return result; } }
方法重载
-
定义: 一个类中,有相同的函数名称,但形参不同的函数
-
规则:
-
方法名称必须相同
-
参数列表必须不同(个数不同,或类型、参数排列顺序不同)
-
方法返回类型可以相同也可以不同
-
如果只是返回类型不同不能叫做方法重载
-
package method;
public class Demo01 {
public static void main(String[] args) {
int sum = add(1, 2,3);
System.out.println(sum);
}
public static int add(int a,int b){
return a+b;
}
public static double add(double a,int b){
return a+b;
}
public static int add(int a,int b,int c) {
return a + b+c;
}
}
命令行传参
-
在程序运行的时候给他传递消息,靠传递命令行参数给main()函数实现
可变传参
-
java支持传递给同类型的可变参数给一个方法
-
在方法的声明中,在指定的参数类型后加一个省略号(...)
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数;任何普通参数必须在它之前说明
package method;
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1,2,3);
}
public void test(int x,int...i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(x);
}
}
递归
-
A方法调用A方法,自己调用自己
-
递归在于用有限的语句来定义对象的无限集合
-
递归结构:
-
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
-
递归体:什么时候需要调用自身方法
-
package method;
public class Demo06 {
//3! 3*2*1
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
练习:
-
写一个计算器,要求实现加减乘除,并且能够循环接收新的数据,通过用户交互实现
-
思路:
-
写四个方法:加减乘除
-
利用循环+switch进行用户交互
-
传递需要的操作的两个数
-
输出结果
-
package method;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("1.加法运算");
System.out.println("2.减法运算");
System.out.println("3.乘法运算");
System.out.println("4.除法运算");
System.out.println("请选择要进行的运算:");
Scanner scanner = new Scanner(System.in);
int x=scanner.nextInt();
switch (x){
case 1:
add();
break;
case 2:
minus();
break;
case 3:
mcltiply();
break;
case 4:
divide();
break;
}
}
public static void add() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
System.out.println((a + b));
}
public static void minus() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
System.out.println((a-b));
}
public static void mcltiply() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
System.out.println((a*b));
}
public static void divide() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
System.out.println((a/b));
}
}