方法

  • 为什么要用方法?
  • 方法的定义格式
  • 方法的三种调用格式
  • 对比方法有参数和无参数
  • 对比方法有返回值和无返回值
  • 总结
  • 方法的实参和形参
  • 方法的分类


为什么要用方法?

任何一个java程序中,都有一个main方法,也叫作主方法。我们在运行程序时都只会执行main方法。而当我们把所有代码都写在main方法中,代码会很臃肿,且代码量巨大时难以阅读,出现bug也难以筛查,最关键的是代码不能重复利用。
这个时候自定义方法就派上了用场。我们把main函数中程序实现功能的代码拆分成一个个代码块,这一个个代码块分别能实现一个个小功能,再将这些代码块放在事先定义好的方法中,这样每一个方法就对应的能实现一个功能。以后我们需要这个功能就在main函数里去调用这个方法就行了,出现bug就去指定的方法中筛查错误。
方法的概念:
所谓方法就是将一个功能抽取出来,把代码单独放在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用这个方法。这样既实现了代码的复用性,也解决了代码冗余的现象。

方法的定义格式

修饰符  返回值类型  方法名称 (参数类型 参数名称1){
			方法体;
			return 返回值;
}

修饰符: 现阶段的固定写法,public static。
返回值类型: 也就是方法产出的数据是什么类型(Int、double…)。
方法名称: 给方法取的名字,命名规则和变量的命名规则一样,都是小驼峰命名法。
参数类型: 进入方法的数据是什么类型。
参数名称: 进入方法的数据对应的变量名称。
PS:参数如果有多个,是用逗号进行分隔。
方法体: 也就是写在方法中的代码,可以包含任意条语句。
return: 两个作用,第一停止当前方法;第二将后面的返回值返还给调用处。
返回值: 也就是这个方法执行后,最终产出的数据结果。返回值的数据类型必须和返回值类型保持对应。

方法的三种调用格式

  1. 单独调用。特点是没有打印输出返回值的功能,也没有赋值功能,只能让这个方法执行,方法产生了怎样的结果都无法进行使用。

语法:方法名称( 参数);

  1. 打印调用。

语法:System.out.println( 方法名称 ( 参数 ) );

  1. 赋值打印调用。字面意思,也就是比打印调用多了个赋值步骤。

语法:
int m = 方法名称 ( 参数 );
System.out.println( m );

注意事项:

  1. 对于有返回值的方法,可以使用单独调用,打印调用或者赋值调用。
  2. 对于无返回值的方法,只能使用单独调用。

下面来看看方法的执行过程:

Java中程序代码都必须在 java程序必须要有main方法吗_Java中程序代码都必须在

案例:

定义一个方法,实现两个整数相加的功能。

Java中程序代码都必须在 java程序必须要有main方法吗_方法名_02


可以看到,单独调用虽然让这个方法执行了,但是并没有打印输出两数相加的结果,也没有赋值功能。

进阶: 定义三个方法计算不同形状的面积,需要的数据手动和面积在自定义方法中输入和输出

public static void main(String[] args) {
		triangle();
		square();
		rectangle();
	}
	public static void triangle() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入三角形的底:");
		double bottom = sc.nextDouble();
		System.out.println("请输入三角形的高");	
		double height = sc.nextDouble();
		double area = bottom * height / 2;
		System.out.println("三角形的面积为:" + area);
	}
	public static void square() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入正方形的边长:");
		double bian = sc.nextDouble();
		double area = bian * bian;
		System.out.println("正方形的面积为:" + area);
	}
	public static void rectangle() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入长方形的长:");
		double chang = sc.nextDouble();
		System.out.println("请输入长方形的宽");	
		double kuan = sc.nextDouble();
		double area =chang*kuan;
		System.out.println("长方形的面积为:" + area);
	}

对比方法有参数和无参数

有参方法: 方法名称后的小括号里有内容。当一个方法需要一些数据条件才能完成相应功能的时候,就是有参方法。

无参方法: 方法名称后的小括号里留空。当一个方法实现功能不需要任何数据条件,自己就能独立完成功能,就是无参方法。

对比方法有返回值和无返回值

Java中程序代码都必须在 java程序必须要有main方法吗_Java中程序代码都必须在_03


案例1: 有返回值

定义一方法,用于求2个数中的较大数(不考虑2个数相等的情况),并将其返回,这2个数字在主方法中由用户输入,结果在主方法中输出

Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个数:");
		int num1 = sc.nextInt();
		System.out.println("请输入第二个数:");
		int num2 = sc.nextInt();
		int result = max(num1,num2);
		System.out.println("最大值是:"+result);
	}
	public static int max(int num1,int num2) {
		int max=0;
		if(num1>num2) {
			max=num1;
		}else {
			max=num2;
		}
		return max;
	}

案例2: 无返回值
编写方法计算圆的面积和周长,在主方法中接收用户输入的半径,在自定义方法中输出结果。
注意:每个方法都需要输入扫描器

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入圆的半径:");
		double radius = sc.nextDouble()	;
		round(radius);
		
	}
	public static void round(double m) {	
		System.out.println("该圆面积为"+3.14*m*m);
		System.out.println("该圆周长为"+2*3.14*m);		
	}

总结

  1. 方法与方法是平行的关系,不能在方法当中再定义方法,不能有嵌套关系。
  2. 方法定义的前后顺序无所谓。
  3. 方法定义之后不会执行,如果希望执行,一定要调用(三种调用方式)。
  4. 对于空类型void方法,该方法没有返回值,因此不能加“return 返回值;”。
  5. 如果方法有返回值,那么必须加上“return 返回值;”,不能不写。
  6. 一个方法中可以出现多个return语句,但必须保证不同条件下同时只能有一个被执行到,两个return不能连写。

方法的实参和形参

实际参数: 定义在main方法中的变量,或者具体的某些值,就是实参。

形式参数: 定义在方法里,用来接收实际参数的变量,就是形参。

Java中程序代码都必须在 java程序必须要有main方法吗_System_04

方法的分类

根据方法是否有参数和返回值,我们可以将方法分成四类:

  1. 有参数无返回值
  2. 有参数有返回值
  3. 无参数无返回值
  4. 无参数有返回值

方法没有最好只有更好,我们要灵活运营这四种方法,根据实际情况,哪种方法解决问题最方便,就用哪种方法。

public static void fun1(int n) {
			System.out.println("这是一个有参数无返回值的方法!");
		}
		
		public static int fun2(int m) {
			System.out.println("这是一个有参有返回值的方法!");
			return 10;
		}
		
		public static void fun3() {
			System.out.println("这是一个无参无返回值的方法!");
		}
		
		public static int fun4() {
			System.out.println("这是一个无参有返回值的方法!");
			return 10;
		}