Java学习day05——方法及其调用重载

这几天忙于置办年货,准备过年用的东西,只能断断续续的学,接下来估计也是这样了,只能尽量有时间就更一些

01_1方法

1.方法就是用来完成解决某件事情或者实现某个功能的办法

01_2方法的定义格式

  1. 方法的定义格式
    修饰符 返回值类型 方法的名字 (参数列表…){
    方法的功能主体
    循环,判断,变量,比较,运算
    return 返回值 ;
    }
  2. 修饰符: 目前暂时固定写法public static
  3. 返回值类型: 方法在运算后,结果的数据类型
  4. 方法名: 自定义名字,满足标识符规范, 方法名字首字母小写,后面每个单词首字母大写
  5. 参数列表: 方法的运算过程中,是否有未知的数据, 如果有未知的数据,定义在参数列表上 (定义变量)
  • 实际参数:就是实际参与运算的。
  • 形式参数;就是方法定义上的,用于接收实际参数的。
  1. return: 方法的返回, 将计算的结果返回. 结束方法

01_03定义方法计算面积

public class MethodDemo{
	
	public static void main(String[] args){
		 //调用方法, 方法执行起来
		 // 在方法main中,调用方法 getArea

		 int area = getArea(5,6);
		 System.out.println("面积是: "+area);
		
	}
	/*
	   要求: 计算一个长方形的面积
	   定义方法解决这个要求
	   分析方法定义过程:
	      1.明确方法计算后的结果的数据类型 int  定义格式对应的就是返回值类型
		  2.方法计算过程中,有没有未知的数据, 宽和长, 未知数据的数据类型 int
		      未知数的变量,定义在方法的小括号内
	*/
	public static int  getArea(int w, int h){
		//实现方法的功能主体
		//int area = w * h;
		return w * h;
	}
}

01_4调用方法

1.在main函数中调用方法,让方法执行起来
2. 方法的形参
方法要什么参数我们就给什么类型的参数。
3. 方法的返回值
方法返回什么类型的值我们就用对应的数据类型的变量来接收

01_5调用方法执行流程

1.方法的定义是没有顺序的,写在main函数的上边或者下边都可以。
2.方法的执行,是把实参传递给形参,从而来执行的。
3.方法只有被调用才会执行。
在这里插入图片描述

01_6方法调用的内存图

在这里插入图片描述

01_7方法调用的练习

import java.util.Scanner;
public class MethodDemo_1{
	public static void main(String[] args){
		//printRect();
		//int number = getNumber();
		//System.out.println(getNumber());
		//printRect2(3,5);
		double avg = getAvg(2,2,3);
		System.out.println(avg);
	}

	/*
	   定义有返回值有参数方法,如求三个数的平均值
	   明确方法计算后的数据类型, 返回值类型 double
	   明确方法未知数, 三个未知的整数
	*/
	public static double getAvg(double a, double b,double c){
		 return (a+b+c)/3;
	}
	
	/*
	    定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形
		明确方法计算后结果,控制台输出图形,没有返回值的
		方法中有没有未知数,图形行数,和列数,是未知的, 数据类型整数int
	*/
	public static void printRect2(int m,int n){
		for(int i = 0 ; i < m ; i++){
			for(int j = 0 ; j < n ;  j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}

	/*
	   定义有返回值无参数方法,如键盘录入得到一个整数
	   明确方法计算后结果的数据类型 int
	   明确有没有未知数,没
	*/
	public static int getNumber(){
		Scanner sc = new Scanner(System.in);
		//int number = sc.nextInt();
		return sc.nextInt();
	}
	
	/*
	   定义无返回值无参数方法,如打印3行,每行3个*号的矩形
	   为什么没有返回值:
	       打印矩形 ,输出效果,不需要将结果返回
		   明确未知数: 不需要未知数
	*/
	public static void printRect(){
		for(int i = 0 ; i < 3 ; i++){
			for(int j = 0 ; j < 3 ;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

01_8方法的定义和使用的注意事项

  1. 方法不能定义在另一个方法的里面
  2. 写错方法名字
  3. 写错了参数列表
  4. 方法返回值是void,方法中可以省略return 不写
    return 下面不能有代码
  5. 方法返回值类型,和return 后面数据类型必须匹配
  6. 方法重复定义问题
  7. 调用方法的时候,返回值是void, 不能写在输出语句中

01_9方法的重载

  1. 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。

  2. 参数列表不同:
    * A:参数个数不同
    * B:参数类型不同
    * C:参数的顺序不同(算重载,但是在开发中不用)

  3. 案例代码

public static int getSum(int a,int b){
			System.out.println("两个int参数");
			return a+b;
		}
		public static int getSum(int a,int b,int c){
			System.out.println("三个int参数");
			return a+b+c;
		}
		public static double getSum(double a,double b){
			System.out.println("两个double参数");
			return a+b;
		}

01_10方法重载注意事项

1.参数列表必须不同
2.重载和参数变量名无关
3.重载和返回值类型无关
4.重载和修饰符无关
5.技巧: 重载看方法名和参数列表

01_11方法参数是基本数据类型

1.方法参数是基本类型时,传递的是值。
在这里插入图片描述

01_12方法参数是引用数据类型

  1. 方法参数是引用类型时,传递的是内存地址值。
    在这里插入图片描述

01_13随机点名器

/*
		   实现随机点名器
		     1.存储所有学生姓名
			 2.预览所有学生姓名,遍历数组
			 3.随机数作为索引,到数组中找元素
			 
			将功能独立出来, 作成方法,调用方法即可
			
			定义三个功能, 用到同一个姓名数据
			姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数
		*/
		import java.util.Random;
		public class CallName{
			public static void main(String[] args){
				//定义数组,存储学生姓名
				String[] names = new String[8];
				//调用添加姓名方法
				addStudent(names);
				//调用遍历数组方法
				printStudentName(names);
				//调用随机姓名的方法
				String name = randomStudentName(names);
				System.out.println(name);
			}
			/*
			  定义方法,随机数,做索引,数组中找到学生姓名
			  返回值?  学生姓名
			  参数?  数组
			*/
			public static String randomStudentName(String[] names){
				Random ran = new Random();
				int index = ran.nextInt(names.length);
				return names[index];
			}
			
			/*
			   定义方法,遍历数组
			   返回值? 没有
			   参数? 数组
			*/
			public static void printStudentName(String[] names){
				for(int i = 0 ; i < names.length ;i++){
					System.out.println(names[i]);
				}
			}
			
			/*
			   定义方法,实现向数组中添加学生姓名
			   返回值? 没有,
			   参数?  参数就是数组
			*/
			public static void addStudent(String[] names){
				names[0] = "张三";
				names[1] = "李四";
				names[2] = "王五";
				names[3] = "李蕾";
				names[4] = "韩梅梅";
				names[5] = "小名";
				names[6] = "老王";
				names[7] = "小华";
			}
		}

01_14库存案例代码实现

/*
		   实现商品的库存管理
		     功能:
			    1.展示用户选择功能清单
				2.根据选择的功能编号,进行不同的操作
				   A. 展示所有库存
				   B. 修改库存数量
				   
			  分析:
			    1.展示用户清单:
				   输出语句, 用户输入, 选择功能序号
				2.根据选择,调用不同的方法
				    switch语句
					  case 1 2 3
				
				   A  展示库存
				     将存储商品的数组,遍历
				   B  修改库存
				        
					  修改所有的库存数量
		*/
		import java.util.Scanner;
		public class Shopp{
			public static void main(String[] args){
				//使用数组,保存商品的信息
				//品名,尺寸,价格,库存数, 定义5个数组
				String[] brand = {"MacBookAir","ThinkpadT450"};
				double[] size = {13.3,15.6};
				double[] price = {9998.97,6789.56};
				int[] count = {0,0};
				while(true){
					int choose = chooseFunction();
					switch(choose){
						case 1:
						  //调用查看库存清单方法
						  printStore(brand,size,price,count);
						break;
						
						case 2:
						  //调用修改库存的方法
						  update(brand,count);
						break;
						
						case 3:
						 return ;
						default:
						  System.out.println("没有这个功能");
						break;
					}
				}
			}
			/*
			  定义方法,修改所有商品的库存
			    用户输入1个,修改1个
				返回值,没有
				参数, 库存数的数组, 品名数组
			*/
			public static void update(String[] brand, int[] count){
				//遍历数组,遍历到一个,修改一个
				//接受键盘输入
				Scanner sc = new Scanner(System.in);
				//遍历数组
				for(int i = 0; i < brand.length ; i++){
					System.out.println("请输入"+brand[i]+"的库存数");
					//键盘输入,录入库存, 存储到库存的数组中
					int newCount = sc.nextInt();
					count[i] = newCount;
				}
				//int chooseNumber = sc.nextInt();
			}
			
			/*
			   定义方法,展示所有的库存清单,遍历
			   返回值,没有
			   参数, 数组
			*/
			public static void printStore(String[] brand,double[] size,double[] price,int[] count){
				System.out.println("----------商场库存清单----------");
				System.out.println("品牌型号     尺寸    价格    库存数");
				//定义变量,计算总库存数,和总价格
				int totalCount = 0;
				int totalMoney = 0;
				//遍历数组,将数组中所有的商品信息打印出来
				for(int i = 0 ; i < brand.length ; i++){
					System.out.println(brand[i]+"   "+size[i]+"    "+price[i]+"   "+count[i]);
					totalCount += count[i];
					totalMoney += count[i]*price[i];
				}
				System.out.println("总库存数: "+totalCount);
				System.out.println("商品库存总金额: "+totalMoney);
			}
			
			/*
			  定义方法,实现用户的选择功能,功能的需要返回来
			  返回值, int
			  参数, 没有
			*/
			public static int chooseFunction(){
				System.out.println("-------------库存管理------------");
				System.out.println("1.查看库存清单");
				System.out.println("2.修改商品库存数量");
				System.out.println("3.退出");
				System.out.println("请输入要执行的操作序号:");
				//接受键盘输入
				Scanner sc = new Scanner(System.in);
				int chooseNumber = sc.nextInt();
				return chooseNumber;
			}
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值