Java的方法定义(有参方法、无参方法、有返回值的方法、方法重载、递归)

1. 何谓方法

什么是方法? 答:语句的集合,是一段用来完成特定功能的代码,方法在程序中被创建,在其他地方被引用

为什么使用方法? 答:方法最大的好处就是可以很好地复用一个代码块,当代码量大的时候就能感受到了

方法应该写在哪? 答:方法应该写在类括号里,一个方法中不可以嵌套另一个方法,但可以调用其他方法

设计方法原则:方法本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法为的原子性,就是一个方法只完成一个功能,这样利于我们扩展


2.方法的定义及调用

  • 方法包含一个方法头和方法体。
  修饰符  返回值类型  方法名(参数类型 参数名){	//方法头
  
  		方法体
  
  	return   返回值;  
  
  }
修饰符

这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

返回值类型
  • 方法可能会返回值,returnValueType是方法返回值的数据类型。
  • 有些方法执行所需操作但没有返回值。这种情况下,returnValueType的关键字是void

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

  • void:没有返回值;
  • 数据类型(基本类型,引用类型)。
方法名
  • 是方法的实际名称,方法名和参数共同构成方法签名(注意规范 见名知意)
参数类型
  • 参数是可选的,方法可以不包含任何参数。
  • 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参。
  • 参数列表是指方法的参数类型、顺序和参数的个数。

什么是形参实参?

  • 形式参数:在方法被调用时用于接收外界输入的数据
  • 实参:调用方法时实际传给方法的数据
方法体

方法体就是一个代码块,也就是我们要完成的功能


定义一个没有返回值没有参数的方法

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

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

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

有参数有返回值的方法

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;
	}
}

return有两种用法:

一、返回结果给调用它的程序

二、结束方法

public static void main(String[] args) {
    
    
    test();//调用方法
}

public static void test(){
    
    
    for (int i = 0 ; i < 100; i++){
    
    
        if (i == 50){
    
    //i等于50的时候
            return;//结束方法	
        }
        System.out.println(i);
    }
}

3.方法重载

java一个类中可以有两个同名的方法吗? 答:可以,但参数要有所不同

public class TestDemo {
    
    
	public static void main(String[] args) {
    
    
        double result = add(10, 20);
        System.out.println(result);
		
        //由于参数不同,会调用到不同的方法
        result = add(10,30,50);
        System.out.println(result);
    }
    
    
    
    public static int add(int x, int y) {
    
    
        return x + y;
    }
    //两个方法同名

    public static double add(double x, int y,int z) {
    
    
        return x + y + z;
    }

}

方法重载的规则:

  • 方法名必须相同
  • 参数列表必须不同(个数不同、或类型不同、或参数排列顺序不同)
  • 方法的返回类型可以相同也可以不相同
  • 仅仅返回值类型不同不足以成为方法重载

实现理论:

方法名称相同时,根据调用方法的参数个数,参数类型逐个匹配,来选择对应的方法

4. 可变参数

JDK1.5开始,Java支持传递同类型的可变参数给一个方法

​ 在方法声明中,在指定参数类型后加三个点()

  • 一个方法只能指定一个可变参数
  • 必须是最后一个参数
  • 任何普通参数必须在它之前声明
public static void main(String[] args) {
    
    
    test("666",1,2,3,4,5);//只要类型相同,想传几个参数就传几个
}

public static void test(String str,int... i){
    
    //可变参数必须是最后一个参数
    System.out.println(i[0]);//通过下标取值(后面数组会学到)
    System.out.println(i[1]);
    System.out.println(i[2]);
    System.out.println(i[3]);
    System.out.println(i[4]);
}

递归

  • A方法调用B方法我们很容易理解
  • 递归:A方法调用A方法!就是自己调用自己

递归可以用简单的程序解决复杂的问题。它通常把大问题转换为一个与原问题相似规模较小的问题,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

递归的结构包括两个部分:

递归头:什么时候不调用自身方法。如果没有头,将陷入死循环

递归体:什么时候需要调用自身方法
public static void main(String[] args) {
    
    
       System.out.println(test(5));
}
//阶乘
//5!   5*4*3*2*1
public static int test(int n){
    
    
    if(n == 1){
    
    
        return 1;  //这里用于结束方法
    }else{
    
    
        return n * test(n-1);
    }
}

在这里插入图片描述

总结

1.刚刚接触应该会有些理解不了,先记住语法,谁刚学的时候都一样,用多了后头再看就简单了

2.多敲代码做练习,不懂的多去搜

3.不懂的代码使用debug设置断点调试看看流程

猜你喜欢

转载自blog.csdn.net/weixin_45277249/article/details/111244393