方法
1)定义:方法是完成特定功能的、相对独立的程序段,与其他编程语言中的子程序、函数等概念相当。
2)优点:方法一旦定义,就可以在程序段中重复使用,故方法可以增强程序结构的清晰度,提高编程效率。
一、方法的声明
在Java中方法声明的语法规则如下:
[修饰符] 返回值类型 方法名称 ([参数列表]){
//方法体
}
1)方法声明包括方法头和方法体。方法头中主要包括方法的名称、形式参数的名称和类型、返回值的类型和访问权限。方法体是一段代码块,用于执行方法的具体操作,方法的局部变量和语句都定义在方法体内部。
2)在Java编程语言中,修饰符是一种关键字,用于修饰变量,方法类等的声明。Java中常用的修饰符有以下几种:
- 访问修饰符:用于控制元素的访问权限,包括public、protected、private和默认(不写任何修饰符)四种。
- 非访问修饰符:用于控制元素的行为, 包括static、final、abstract等。
- 其他修饰符:包括transient、native、strictfp等。
- 在Java中,一个元素可以拥有多个修饰符,他们的顺序可以是任意排布的。
3)返回值类型反映方法完成其功能后返回的运算结果的数据类型如果方法没有返回值,则应该使用void关键字。
4)方法名称要符合标识符命名规则,不要与Java中的关键字重复。
5)参数列表表示在调用方法时要传递的参数个数和参数类型。参数列表中可以包含多个参数,之间用逗号隔开。
6)对于有返回值的方法,其方法体中必须有一条return语句。
7)return返回的类型必须和方法声明的返回值类型一样。
8)方法不能嵌套,不能再一个方法体中再声明另一个方法。
public class main{
public static void main (String args[]){
}
}
在Java中,main 方法是一个特殊的方法,是是程序的入口点。
二、方法的使用
2.1 方法的调用
调用方法,即执行方法中方法体中的部分。
import java.util.Scanner
public class main{
public static void average (){
Scanner input = new Sanner(System.in);
System.out.println("请输入Java成绩:");
int java = inpu.nextInt;
System.out.println("请输入Sql成绩:");
int sql = inpu.nextInt;
System.out.println("请输入oracle成绩:");
int oracle = inpu.nextInt;
double avg = (java + sql + oracle) * 1.0 / 3;
System.out.println("该喵星人的平均成绩:");
}
public static void main (String args[]){
average();
average();
average();
}
}
1)average方法是一个没有返回值的方法。
2)average方法在main方法中被调用了三次。
3)main是程序的入口,由main方法来调用average方法。
4)方法可以实现代码的重复使用。
2.2 方法的返回值
被调方法通过return语句将数据返回给主调方法,一个方法只能返回一个数据给主调方法。return后面的返回值类型必须与方法声明时的返回值类型一样。
public class Main{
public static double average (){
Scanner input = new Sanner(System.in);
System.out.println("请输入Java成绩:");
int java = inpu.nextInt;
System.out.println("请输入Sql成绩:");
int sql = inpu.nextInt;
System.out.println("请输入oracle成绩:");
int oracle = inpu.nextInt;
double avg = (java + sql + oracle) * 1.0 / 3;
return avg;
}
public static void main (String args[]){
double result1 = average();
double result2 = average();
double result3 = average();
System.out.println("第一位喵星人的平均成绩:" + result1);
System.out.println("第二位喵星人的平均成绩:" + result2);
System.out.println("第三位喵星人的平均成绩:" + result3);
}
}
通过return语句将double类型的数据返回给main方法。
2.3 方法的参数
方法的参数时方法执行的前提条件,只有条件满足才会执行此方法。当调用方法时,传入的参数必须和方法要求的参数个数,类型,顺序一致。
public class Main{
public static double average (int count){
Scanner input = new Sanner(System.in);
System.out.println("请输入第" + count + "个同学的java成绩:");
int java = inpu.nextInt;
System.out.println("请输入第" + count + "个同学的sql成绩:");
int sql = inpu.nextInt;
System.out.println("请输入第" + count + "个同学的oracle成绩:");
int oracle = inpu.nextInt;
double avg = (java + sql + oracle) * 1.0 / 3;
return avg;
}
public static void main (String args[]){
double [] avg = new double[3];
for(int i = 0, i < avg.length, i ++){
avg[i - 1] = average[i];
}
for(int i = 0, i < avg.length, i ++){
System.out.println("第" + (i + 1) + "个同学的平均成绩是:" + avg[i]);
}
}
}
1)用double类型的数组来储存返回的数据,
2)在main方法中输出成绩。
2.4 可变长度参数
在声明可变长度参数时需要在参数类型后面加上(…),可变长度参数在处理时可以按照数组来处理。每个方法只能有一个可变长度参数,并且只能是最后一个。在做参数时不能和数组同时出现。
2.5 变量的作用域和生命周期
- 变量的作用域是指在一个变量定义之后,在持续的什么地方能够使用。变量的生命周期是指变量在什么时候分配内存,在什么时候回收内存。
- 一个变量的作用域只被限制在当前变量所定义的语句块中,也就是包含该变量的,离该变量最近的大括号中。
- 方法中定义的变量,只能在方法中使用,称为局部变量。只能在当前方法中使用,包括当前方法的循环语句和判断语句。
- 变量的生命周期,是指从变量声明到变量终结。普通变量的的生命周期和其作用域周期相同。
2.6 递归
在Java中,递归是指一个方法或函数过程中调用自身的过程。递归分两种,一种是基本情况,一种是递归情况。基本情况是指可以直接解决的情况,通常是递归情况的终止情况,避免无限递归。
递归虽然是一种强大的编程技巧,但需要注意递归深度和递归栈的使用情况,以避免出现性能问题和堆栈溢出情况。
以下使用递归实现阶乘:
public class Main{
public static int factorial(int n){
if(n == 0 || n == 1){
return 1;
}else {
return n * factorial(n - 1);
}
}
public static void main (String args[]){
int result = factorial(5);
System.out.println(result);
}
}