Java方法详解
什么是方法
-
java方法是语句的集合,语句在一起执行一个功能。
1. 方法是解决一类问题的步骤的有序集合 2. 方法包含于类或对象中 3. 方法在程序中被创建,在其他地方被应用。
-
设计原则:
方法的本意是功能块,就是实现某个功能的语句块的集合,我们设计方法时,最好保持方法的原子性:一个方法只能完成一个功能,这样利于我们后期的扩展。
-
方法命名规则:驼峰命名规则法。
5. ```java
package method;
public class Demo01 {
public static void main(String[] args) {
int sum=add(1,3);//1,3为实际参数
System.out.println(sum);
}
//加法;a,b为形式参数
public static int add(int a,int b){
return a+b;
}
}
```
方法的定义及调用
-
方法语法:
-
方法保护一个方法头和一个方法体;
-
修饰符:可选,告诉编辑器如何调用该方法,定义了该方法的访问类型。
-
返回值类型(returnValueType):方法可能会返回值,returnValueType是方法返回值的数据类型,有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
-
方法名:方法的实际名称,方法名和参数表共同构成方法签名。驼峰命名法;
-
参数类型:参数像是一个占位符,当方法被调用是,传递值给参数,这个参数被称为实参或变量,参数列表是指方法的参数类型,顺序和参数的个数,参数是可选的,方法可以不包含任何参数。
- 形参:在方法被调用是用于接收外界输入的数据
- 实参:调用方法时实际传递给方法的数据。
-
方法体:方法体包含具体的语句,定义该方法的功能
修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体; ... return 返回值; }
-
-
package method;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数值:");
double c = scanner.nextDouble();
double d = scanner.nextDouble();
double Max=da(c, d);
System.out.println(Max);
}
//比较两个数大小
public static double da(double c, double d) {
double result=0;
if(c==d){
System.out.println("数值相等!");
return 0;
}
if (c > d) {
result=c;
} else {
result=d;
}
return result;//终止方法
}
}
- 方法调用:
- 调用方法:对象名.方法名(实参列表);
- java支持两种调用方法的方式,根据方法是否返回值来选择。
- 当方法放回一个值的时候,方法调用通常被当作一个值。
- 如果方法返回值void,方法调用一定是一条语句。
方法重载
1. 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
2. 方法重载的规则:
1. 方法名称必须相同。
2. 参数列表必须不同(个数,类型,参数排列顺序都不相同)
3. 方法的返回类型可以相同也可以不相同。
4. 仅仅返回类型不同不足以构成方法重载。
3. 实现理论:
1. 方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,已选择对应的方法。若匹配失败,则编译器报错。
可变参数:
1. Java支持传递同类型的可变参数给一个方法
1. 在方法声明中,在指定参数类型后加一个省略号(...)
1. 在一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在他之前声明。
递归
- 自己调用自己。
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身昂发,如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法。
package method;
public class Demo02 {
//阶乘问题
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);//调用方法自身
}
}
}
package method;
import java.util.Scanner;
public class Demo03 {
/*计算器*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("=============平的计算器===============");
System.out.println("选择功能:");
String r = scan.nextLine();
switch (r) {
case "A":
System.out.println("您选择的是加法运算");
System.out.println("请输入数值:");
double a=scan.nextDouble();
double b=scan.nextDouble();
if(a>b){
add(a,b);
}
break;
case "B":
System.out.println("您选择的是减法运算");
System.out.println("请输入数值:");
double c=scan.nextDouble();
double d=scan.nextDouble();
if(c>=d){
delete(c,d);
}else{
System.out.println("请重新输入!");
}
break;
case "C":
System.out.println("您选择的是乘法运算");
System.out.println("请输入数值:");
double e=scan.nextDouble();
double f=scan.nextDouble();
if(e>=f){
ch(e,f);
}else{
System.out.println("请重新输入!");
}
break;
case "D":
System.out.println("您选择的是乘法运算");
System.out.println("请输入数值:");
double g=scan.nextDouble();
double h=scan.nextDouble();
if(h!=0){
cu(g,h);
}else{
System.out.println("请重新输入!");
}
break;
}
}
public static String add(double a, double b) {
System.out.println((a + b));
return null;
}
public static String delete(double a, double b) {
System.out.println((a - b));
return null;
}
public static String ch(double a, double b) {
System.out.println((a *b));
return null;
}
public static String cu(double a, double b) {
System.out.println((a / b));
return null;
}
}