Day06

Day06

一、方法

​ Java方法是语句的集合,它们在一起执行一个功能。

​ 1、Java方法是语句的集合,它们在一起执行一个功能。

​ 2、方法是解决一类问题的步骤的有序组合

​ 3、方法包含于类或对象中

​ 4、方法在程序中被创建,在其他地方被引用

1、方法的优点

​ A、使程序变得更简短而清晰。

​ B、有利于程序维护。

​ C、可以提高程序开发的效率。

​ D、提高了代码的重用性。

2、方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}
  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

D53C92B3-9643-4871-8A72-33D491299653

编写的位置:类里,方法外

3、方法的分类

​ A、无参数无返回值的方法
​ B、有参数的方法
​ C、有返回值的方法

public class Test{
	public static void main(String[] args){
		run();
		printStar("^");
	}

	public static void run(){
		System.out.println("你跑啊!");
	}

	public static void printStar(String str){
		for (int i=0;i<=6;i++)
		{
			for (int j=0;j<i;j++)
			{
				System.out.print(str);
			}
		System.out.println();
		}
	}
}
import java.util.Scanner;
public class Test02
{
	public static void main(String[] ags){
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第一个人数字:");
		int a=sc.nextInt();
		System.out.println("请输入第二个人数字:");
		int b=sc.nextInt();
		int result=add(a,b);
		System.out.println("最大值为"+result);
	}
    //方法声明时规定返回值类型
	public static int add(int a,int b){
		int c=(a>b)?a:b;
    //return后接的数据时返回的具体数据,此数据必须和方法声明时的返回值数据类型相兼容
		return c;
	}
}
//需求:创建一个方法,该方法用于交换两个变量。
public class TestPassByValue {
  public static void main(String[] args) {
    int num1 = 1;
    int num2 = 2;
 
    System.out.println("交换前 num1 的值为:" +
                        num1 + " ,num2 的值为:" + num2);
 
    // 调用swap方法
    swap(num1, num2);
    System.out.println("交换后 num1 的值为:" +
                       num1 + " ,num2 的值为:" + num2);
  }
  /** 交换两个变量的方法 */
  public static void swap(int n1, int n2) {
    System.out.println("\t进入 swap 方法");
    System.out.println("\t\t交换前 n1 的值为:" + n1
                         + ",n2 的值:" + n2);
    // 交换 n1 与 n2的值
    int temp = n1;
    n1 = n2;
    n2 = temp;
 
    System.out.println("\t\t交换后 n1 的值为 " + n1
                         + ",n2 的值:" + n2);
  }
}

4、方法的用法

​ A、在方法中,需要外界的数据,就可以给方法设置参数。
​ B、在方法中,需要将方法的执行结果传递到外界,就可以给方法设置返回值。
​ C、方法不需要外界的数据,也不需要向外界传递数据,就可以将方法设置成无参数无返回值。

5、注意事项

​ A、方法功能的单一性:一个方法中的功能最好的单一的。
​ B、方法声明时规定返回值类型。
​ C、return后接的值必须和方法声明时规定的返回值类型相兼容。
​ D、一个方法只能返回一个数据。

二、方法的重载

1、在同一个类中,方法名相同,参数列表不同的方法。

参数列表不同:个数不同,数据类型不同

与返回值类型无关。

2、案例

/** 需求1:编写方法,传入两个int值,返回最大值
	需求2:编写方法,传入三个int值,返回最大值
	需求3:编写方法,传入两个double值,返回最大值
	需求4:编写方法,传入三个double值,返回最大值
*/
public class Test{
    public static void main(String[] args){
		
		//打印方法注意事项:该方法(getMax)必须有返回值才能打印
		System.out.println(getMax(10.1,20.2,30.3));
	}
	
	public static int getMax(int a,int b){
		return (a>b)?a:b;
	}
	
	public static int getMax(int a,int b,int c){
		int max = getMax(a,b);//系统会根据参数类型自动找到第1个getMax
		max = getMax(max,c);
		return max;
	}
	
	public static double getMax(double a,double b){
		return (a>b)?a:b;
	}
	
	public static double getMax(double a,double b,double c){
		double max = getMax(a,b);//系统会根据参数类型自动找到第3个getMax
		max = getMax(max,c);
		return max;
	}
	
	public static void method(int i,String str){}
	
	public static void method(String str,int i){}
	
}

3、习题

//设计一个方法,求N的阶乘
import java.util.Scanner;
public class Test
{
	public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
		System.out.println("请输入数字:");
		int n=sc.nextInt();
		int a=Demo(n);
		System.out.println(a);
	}
	public static int Demo(int n){
		if(n!=1){
			return Demo(n-1)*n;
		}else{
			return	1;
		}
	}
}
//**不死神兔(斐波那契数)		
	有一对兔子,从出生起后第三个月起每个月都生一对兔子,
	小兔子长到第三个月每个月又生一对兔子,假如兔子都不死,
	问第n个月的兔子对数为多少?
*/
import java.util.Scanner;
public class Test
{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第几月:");
		int n=sc.nextInt();
		int num=rabbit(n);
		System.out.println("第"+n+"个月有兔子对数"+num);
	}
	public static int rabbit(int n){
		if(n==1||n==2){
			return 1;
		}else{
			return rabbit(n-1)+rabbit(n-2);
		}
	}
}

三、变量作用域

变量的范围是程序中该变量可以被引用的部分。

方法内定义的变量被称为局部变量。

局部变量的作用范围从声明开始,直到包含它的块结束。

局部变量必须声明才可以使用。

方法的参数范围涵盖整个方法。参数实际上是一个局部变量。

for循环的初始化部分声明的变量,其作用范围在整个循环。

但循环体内声明的变量其适用范围是从它声明到循环体结束。它包含如下所示的变量声明:

img

你可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。

posted on 2021-10-12 19:11  飞翔的東君  阅读(35)  评论(0)    收藏  举报