Java 方法的定义和使用

Java 方法的定义和使用

方法的最大好处是可以进行重复调用,但是至于说那些操作要形成方法,这些都要根据你的实际项目经验而自我总结的。 ##方法的基本定义 限制条件:在主类中定义,并且由主方法直接调用的方法形式。 方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。

public static 返回类型 方法名称([参数类型 变量, ......]) {
方法体代码;
[return [返回值];]
}
1234

在定义方法的时候对于方法的返回值有以下的两类:

  • void:没有返回值;

  • 数据类型(基本类型,引用类型)。

示范: 定义一个没有返回值,没有参数的方法

public class TestDemo {
public static void main(String[] args) {
print(); //主方法里面直接调用方法
}
public static void print() {
System.out.println("Hello World!"); //定义方法
}
}
12345678

示例: 定义一个有参数无返回值的方法

public class TestDemo {
public static void main(String[] args) {
print("Hello"); //主方法里面直接调用方法
print(" world");
print("!");
}
public static void print(String msg) { //定义方法
System.out.print(msg);
}
}
12345678910

示例: 有参数有返回值的方法

public class TestDemo {
public static void main(String[] args) {
int result = add(10, 20);
System.out.println(result);
//既然方法有返回值,那么这些返回值也可以直接输出
System.out.println(add(100, 200));
}
public static int add(int x, int y) { //定义方法
return x + y;
}
}
1234567891011

但是在定义方法的时候有一点特别要注意,如果某一个方法上使用了void定义,那么该方法可以直接用return来结束调用。一般而言,这种return的处理往往需要结合if判断来实现。

public class TestDemo {
public static void main(String[] args) {
print(10);
print(20);
}
public static void print(int x) { //定义方法
if(x == 20) //表示的是方法结束的判断
return; //此语句之后的代码不再执行
System.out.println("x = " + x);
}
}
1234567891011

对于第一次接触方法的人来讲,先将语法记住,至于怎么用,需要时间来消化。 ##方法重载(重点) 方法重载指的是:方法名称相同,参数的类型和个数不同。

示例: 实现方法重载

public class TestDemo {
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
public static int add(int x, int y) {
return x + y;
}
//此时方法名称相同,参数的个数不同
public static int add(int x, int y, int z) {
return x + y + z;
}
public static double add(double x, double y) {
return x + y;
}
}
123456789101112131415161718

在进行方法重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。

示例: 观察如下程序

public class TestDemo {
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println("hello");   //输出字符串
System.out.println(1); //输出整形
System.out.println(1.1); //输出浮点型
System.out.println('A'); //输出字符
System.out.println(true); //输出布尔
}
}
12345678910

证明:System.out.println()是一个被重载的方法

方法递归调用

方法的递归调用指的是一个方法自己调用自己的形式。一般如果要进行方法的递归操作往往都具备有以下的特点:

  • 方法必须有一个递归的结束条件;

  • 方法在每次递归处理的时候一定要做出一些变更;

示例: 实现1 ~ 100的累加操作

public class TestDemo {
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);
}
}
12345678910
  1. [main()调用] 第1次执行sum()方法 return 100 + sum(99);

  2. [sum()递归] 第2次执行sum()方法 return 99 + sum(98);

  3. [sum()递归] 第3次执行sum()方法 return 98 + sum(97);

  4. [sum()递归] 倒数第2次执行sum()方法 return 2 + sum(1);

  5. [sum()递归] 倒数第1次执行sum()方法 return 1;

示例: 实现60!,这个结果太大,应该使用double。

public class TestDemo {
public static void main(String[] args) {
System.out.println(mul(60));
}
public static double mul(int num) {
if(num == 1)
return  1;
return num * mul(--num);
}
}
12345678910

通过代码可以发现使用while循环的操作其实大部分都可以更换为递归,之所以使用递归主要是一个方法可以执行的操作很多,而且结构要好。

阶乘使用递归方法

package methods;

public class digui {

public static void main(String[] args) {
// TODO Auto-generated method stub
//5! = 5*4*3*2*1
//4! = 4*3*2*1
//3! = 3*2*1
//2! = 2*1
//1! = 1

System.out.println(f(5));
}
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}

注意点:

递归好处:代码更简洁清晰,可读性更好!

但是

递归坏处:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。 个人觉得:非必要时不递归 递归方法只能处理一些数据量较小的问题!!!

 

posted @ 2020-09-12 10:51  墨染念颖  阅读(981)  评论(0编辑  收藏  举报