JAVA基础知识-方法。方法概述、定义格式、注意事项、void类型方法调用用单独调用、方法的重载

1,概述

  • 假设我们玩一个游戏,在游戏过程中我们要不断的释放技能,假设这个技能的释放由100行代码完成的,在每次释放技能的时候都需要把100行代码写一遍,太麻烦,重复东西太多,程序可读性差。
  • 为了解决这个问题,我们可以把释放技能的代码提取出来放在一个{}中。并给他起个名字,这样的话,我们在每次需要释放技能的时候只需要通过这个名字来调用即可。
  • 上述过程中,所提取出来的代码就可以认为是一个程序中定义的一个方法,在需要的时候调用即可。
  • 简单说:方法就是完成特定功能的代码块
  • 有些语言里由函数的定义,在java中函数就是方法

2,方法的定义格式

						参数列表
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,....){
			方法体(函数体):就是完成特定功能的代码
			return 返回值;
		}

解释:

修饰符:目前就用 public static 
返回值类型:就是功能结果的数据类型
方法名:为了方便调用起的名字  符合命名规则
参数:
	实际参数:就是实际参与运算的
	形式参数:就是方法上定义的,用来接收实际参数的
参数类型:就是参数的数据类型
参数名:就是变量名
方法体:就是完成特定功能的代码
return: 结束方法,把结果返回给调用者
返回值:就是方法的结果,由return带给调用者
  • 如何才能写好一个方法:
    在写方法前必须先确定2个东西:
      返回值类型:就是功能结果的数据类型
      参数列表:要几个参数,每个参数的数据类型是什么

  • 举个栗子:
    写一个求2个数据之和的方法

  • 方法特点:
    不调用,不执行

  • 如何调用呢?(有明确返回值的方法的调用)
      单独调用 sum(a,b); 一般来说没有意义
      输出调用 System.out.println(sum(a,b)); 可能还需要针对结果进行进一步操作
      赋值调用 int result = sum(a,b); 推荐用这种

class Sum{
	public static void main(String[] args){
		int x = 5;
		int y = 6;
		//方式一:单独调用
		sum(x,y);
		//方式二:输出调用
		System.out.println(sum(x,y));
		//方式三:赋值调用
		int result = sum(x,y);
		System.out.println(result);
	}
	
	//求2个数之和   int
	/*
		确定2个东西:
			返回值类型:int
			参数列表:2个,都是int类型
	*/
	public static int sum(int a,int b){
		//int c = a+b;
		//return c;
		return a+b;
	}
}	

在这里插入图片描述

练习1

键盘输入2个数据,求和,返回较大值,比较是否相等。

import java.util.Scanner;
class Test1{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);				//键盘输入
		System.out.println("请输入两个数字");				//提示用户输入两个数字
		int a = sc.nextInt();
		int b = sc.nextInt();
		
		int result1 = sum(a,b);								//调用sum方法
		System.out.println(a+"+"+b+"="+result1);			
		
		int result2 = getMax(a,b);							//调用getMax方法
		System.out.println(a+"和"+b+"较大的是"+result2);	
		
		boolean result3 = biJiao(a,b);						//调用biJiao方法
		if(result3){
			System.out.println(a+"和"+b+"相等");
		}
		System.out.println(a+"和"+b+"不相等");
	}
	public static int sum(int a, int b){					//求和
		int c = a + b;
		return c;
	}
	public static int getMax(int a,int b){					//返回较大值
		int c = a > b ? a:b;
		return c;
	}
	public static boolean biJiao(int a,int b){				//判断是否相等
		boolean c = a==b;
		return c;
	}
}

练习2

键盘输入3个数据,求和,返回较大值

import java.util.Scanner;
class Test2{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);				//键盘输入
		System.out.println("请输入三个数字");				//提示用户输入三个数字
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		
		int result1 = sum(a,b,c);								//调用sum方法
		System.out.println(a+"+"+b+"+"+c+"="+result1);			
		
		int result2 = getMax(a,b,c);							//调用getMax方法
		System.out.println(a+"和"+b+"以及"+c+"中较大的是"+result2);	
		
	}
	public static int sum(int a, int b,int c){					//求和
		int d = a + b +c;
		return d;
	}
	public static int getMax(int a,int b,int c){					//返回较大值
		//方法1:先比较a,b。再用a,b中较大的和c比较,得出最大的
		//int temp = a > b ? a:b;
		//int max = temp > c ? temp:c; 
		
		//方法2:
		int max = a>b? (a>c?a:c) : (b>c?b:c);
		return max;
	}
}

3,方法的注意事项

  • 方法不调用不执行
  • 方法和方法是平级的,不能嵌套定义
  • 方法的参数之间是用逗号隔开的
  • 定义时设置参数类型,调用时不用传递数据类型
  • 若方法有明确的返回值,一定要有return,还必须返回一个值

4,void类型方法的调用

  • 单独调用
  • 输出调用(错误)
  • 赋值调用(错误)
/*
我要在控制台上输出如下图形
******
******
******
*/
import java.util.Scanner;
class Demo{
	public static void main(String[] args){
		/*
		//打印3行7列的
		for(int i=1;i<4;i++){
			for(int j=1;j<8;j++){
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println("--------------------");
		//打印5行8列的
		for(int i=1;i<6;i++){
			for(int j=1;j<9;j++){
				System.out.print("*");
			}
			System.out.println();
		}
		*/
		/*
		随着我的需求不断改变,我们每次都要把这个代码写一遍
		太麻烦,我们发现需求不断改变只是行和列的值变化了,
		代码本省没有发生变化,所以我们就需要改进一下。
		这个代码就是一个打印图形的代码。
		所以我们可以用方法来改进代码。
		*/	
		//单独调用
		printStar(8,15);
		//输出调用
		//错误: 此处不允许使用 '空' 类型
		//System.out.println(printStar(8,15));
		//赋值调用
		//错误: 非法的表达式开始
		//void v = printStar(8,15);
	}
	
	/*
	写一个打印*图的方法,2个确定:
		返回值类型:空  这里使用void  (看mian方法就知道了)
		参数:int h  int l
	*/
	public static void printStar(int h,int l){
		for(int i=1;i<=h;i++){
			for(int j=1;j<=l;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

练习1:

  • 键盘输入行和列,输出对应图形
import java.util.Scanner;
class FangFa{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入两个数字:");
		int a = sc.nextInt();
		int b = sc.nextInt();
		
		printStar(a,b);   //调用打印方法
	}
	
	//打印*的方法实现
	public static void printStar(int a, int b){
		for(int i = 1; i <= a; i++){
			for(int j = 1; j <= b; j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

练习2:

  • 键盘输入一个数x(1-9),输出对应的xx乘法表
import java.util.Scanner;
class FangFa{
	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数字:");
		int a = sc.nextInt();
		printCheng(a);   //调用打印方法
	}
	
	//打印乘法表的方法实现
	public static void printCheng(int a){
		for(int i = 1; i <= a; i++){
			for(int j = 1; j <= i; j++){
				System.out.print(j+"*"+i+"="+j*i+"\t");
			}
			System.out.println();
		}
	}
}

5,方法的重载

  • 方法重载的概述
    在一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
  • 特点:
    和返回值无关,只看名字和参数
/*
随着我的需求不断改变,我们对应提供了很多个方法
但是他们的名字都不一样。
我们之前也要求过,起名字要  见名知意
但是现在很明显其实没有知意
怎么办?
针对这样的情况:方法的功能类似,参数列表不同的情况
 为了 见名知意 java是允许这些方法的名字一样
这种情况有一个专业的叫法---方法的重载

方法重载:在同一个类中 方法名相同,参数列表不同,和返回值无关。
	的这种现象。
参数列表不同:
	参数的个数不同
	参数的类型不同	
*/
import java.util.Scanner;
class Demo{
	public static void main(String[] args){
		//jvm会根据不同的参数调用不同的方法
		//System.out.println(sum(2,3));
		//System.out.println(sum(2.0,5));
		float f = 3.5F;
		System.out.println(sum(f,3.0));
		//System.out.println(sum(2,3,4));
	}
	
	//写一个求2个数据之和的方法
	public static int sum(int a,int b){
		System.out.println("2个int");
		return a+b;
	}
	
	//写一个求3个数据之和的方法
	public static int sum(int a,int b,int c){
		System.out.println("3个int");
		return a+b+c;
	}
	
	//写一个求4个数据之和的方法
	public static int sum(int a,int b,int c,int d){
		System.out.println("4个int");
		return a+b+c+d;
	}
	
	//写一个求2个double类型的数据之和
	public static double sum(double a,double b){
		System.out.println("2个double");
		return a+b;
	}
	//错误: 已在类 Demo4定义了方法 sum(double,double)
	//public static double sum(double a,double b){
	//	return a+b;
	//}
	public static double sum(float a,double b){
		System.out.println("1个double,1个float");
		return a+b;
	}
}

-练习:

  • 比较2个数是否相等,参数分别是2个byte,2个short,2个int,2个long
class Demo{
	public static void main(String[] args){
		byte b1 = 3;
		byte b2 = 4;
		System.out.println(isSame(b1,b2));
		
		short b3 = 3;
		short b4 = 4;
		System.out.println(isSame(b3,b4));

		int b5 = 3;
		int b6 = 4;
		System.out.println(isSame(b5,b6));

		long b7 = 3;
		long b8 = 4;
		System.out.println(isSame(b7,b8));
	}
	
	public static boolean isSame(byte a,byte b){
		System.out.println("byte");
		return a==b;
	}
	
	public static boolean isSame(short a,short b){
		System.out.println("short");
		return a==b;
	}
	
	public static boolean isSame(int a,int b){
		System.out.println("int");
		return a==b;
	}
	
	public static boolean isSame(long a,long b){
		System.out.println("long");
		return a==b;
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值