方法的定义与使用
方法的定义
在程序之中很多情况下是由可能需要重复执行一些代码的。
方法在定义的时候有一个前提:方法在主类中定义,并且由主方法直接调用
方法的基本定义
定义在主类之中并且由主方法直接调用,语法如下:
public static 返回值类型 方法名称([参数类型 变量,....]) {
// 该方法要执行的代码
[return [返回值] ;]
}
对于返回值而言就可以使用Java中定义的数据类型(基本数据类型、引用数据类型),在方法之中可以进行返回值的处理。如果要返回数据则可以使用return来描述,return所返回的数据类型与方法的返回值类型相同,如果不返回数据类型,则可以用void进行声明。
方法名称与变量的定义命名要求:
- 在进行方法名称定义的时候要求第一个单词的字母小写,而后每个单词的首字母大写
- 在进行变量名称定义的时候要求第一个单词的字母小写,而后每个单词的首字母大写
定义一个无参无返回值的方法:
public class JavaDemo {
//主方法
public static void main(String[] args) {
printMessage(); // 执行方法调用
printMessage(); // 可以重复调用
}
public static void printMessage() { // 该方法包含了三行代码
System.out.println("**************************");
System.out.println("* 点赞、收藏、转发 *");
System.out.println("**************************");
}
}
方法的本质就是方便使用者进行重复的调用,并且所有的程序一定都是通过主方法开始执行的。
定义一个有参有返回值的方法:
public class JavaDemo {
public static void main(String[] args) {
String result = get(20.0) ;
System.out.println(result) ;
System.out.println(get(1.0)) ; // 返回值可以直接输出
}
public static String get(double money) {
if (money >= 10.0) {
return "给你带一份快餐,找零:" + (money - 10.0) ;
} else {
return "对不起,您的余额不足。" ;
}
}
}
在进行方法定义的时候,如果方法的返回值类型为void,那么可以利用return来结束调用。
public class JavaDemo {
public static void main(String[] args) {
sale(3) ;
sale(-3) ;
}
public static void sale(int money) {
if (money <= 0) { // 余额不足
return ; // 后续代码不执行了
}
for (int x = 1 ; x <= money ; x ++) {
System.out.println("点赞了" + x + "次") ;
}
}
}
方法的重载(重要)
定义:当方法的名称相同,参数的类型或个数不同的时候就称为方法的重载。
举个栗子:定义一个加法处理方法,该方法可以接受两个int变量、三个int变量、两个double变量的处理
public class JavaDemo {
public static void main(String[] args) {
int resultA = sum(10,20) ; // 调用两个int参数的方法
int resultB = sum(10,20,30); // 调用三个int参数的方法
double resultC = sum(10.2,20.3) ;//调用两个double参数的方法
System.out.println("加法执行结果:" + resultA) ;
System.out.println("加法执行结果:" + resultB) ;
System.out.println("加法执行结果:" + resultC) ;
}
public static int sum(int x,int y) {
return x + y ;
}
public static int sum(int x,int y,int z) {
return x + y + z ;
}
public static double sum(double x,double y) {
return x + y ;
}
}
同一个方法名称可以根据调用时传递的不同参数的类型或个数实现不同方法体的调用,这样就实现方法重载的定义。
tips:
方法的重载与方法的返回值类型没有任何的关系,它只跟参数有关系,但是在实际的开发中,请一定要把握一个基本的开发原则:只要是方法重载强烈建议其返回值类型相同。
方法递归调用(了解)
方法的递归调用指的是一个方法自己调用自己的情况,利用递归调用可以解决一些重复且麻烦的问题。在进行方法递归调用的时候一般要考虑:
一定要设置方法递归调用的结束条件
每一次调用的过程中一定要修改传递的参数条件
举个栗子:实现一个1~100的累加
使用while循环
public class JavaDemo {
public static void main(String args[]) {
int sum = 0 ;
int x = 1 ;
while (x <= 100) { // 循环的结束条件
sum += x ;
x ++ ; // 修改每一次循环的变量
}
System.out.println(sum) ;
}
}
使用递归
public class JavaDemo {
public static void main(String args[]) {
System.out.println(sum(100)) ;
}
public static int sum(int num) { // 执行累加
if (num == 1) { // 不累加了
return 1 ;
}
return num + sum(num - 1) ; // 递归调用
}
}
分析:
【第1次执行sum()、主方法执行】return 100+sum(99);
【第2次执行sum()、主方法执行】return 99+sum(98);
…………
【第99次执行sum()、主方法执行】return 2+sum(1);
【第100次执行sum()、主方法执行】return 1;
整体形式:100+99+……+2+1;递归操作虽然可以简化调用,但是在开发过程中很少会出现递归的情况。大部分情况下考虑一些简单的处理逻辑。还有一个少使用的原因时处理不当会造成内存溢出。
栗子:计算“1!+2!+3!+……+90!”(2! = 1x2;3!=1x2x3)
public class JavaDemo {
public static void main(String[] args) {
System.out.println(sum(3)) ;
}
public static double sum(int num) {
if (num == 1) {
return 1 ;
}
return fan(num) + sum(num - 1) ;
}
public static double fan(int num) {
if (num == 1) {
return 1 ;
}
return num * fan(num - 1) ;
}
}