Java基础语法05_方法

今日内容介绍
1、方法基础知识
2、方法高级内容
3、方法案例

01 方法的概述

  • A: 为什么要有方法
    • 提高代码的复用性
  • B: 什么是方法
    • 完成特定功能的代码块。

02 方法的定义格式

  • A: 方法的格式

      修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
      	方法体语句;
      	return 返回值; 
      } 	
    
  • B: 方法的格式说明

    • 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
    • 返回值类型:就是功能结果的数据类型。
    • 方法名:符合命名规则即可。方便我们的调用。
    • 参数:
      • 实际参数:就是实际参与运算的。
      • 形式参数;就是方法定义上的,用于接收实际参数的。
    • 参数类型:就是参数的数据类型
    • 参数名:就是变量名
    • 方法体语句:就是完成功能的代码。
    • return:结束方法的。
    • 返回值:就是功能的结果,由return带给调用者。

03定义方法计算面积

  • A: 定义方法计算面积

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

04 调用方法

  • A: 调用方法
    • a: 在main函数中调用方法,让方法执行起来
    • b: 方法的形参
      • 方法要什么参数我们就给什么类型的参数。
    • c: 方法的返回值
      • 方法返回什么类型的值我们就用对应的数据类型的变量来接收

05 调用方法执行流程

  • A: 调用方法执行流程
    • a: 方法的定义是没有顺序的,写在main函数的上边或者下边都可以。
    • b: 方法的执行,是把实参传递给形参,从而来执行的。
    • c: 方法只有被调用才会执行。

06 方法调用的内存图

  • A: 方法调用的内存图
    • a: 参见\day05\day05(Java基础语法)\day05_source\方法内存图.JPG

07 方法调用的练习

  • A: 案例代码

      /*
         方法的定义练习
      */
      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();
      		}
      	}
      }
    

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

  • A: 方法的定义和使用的注意事项
    • a: 方法不能定义在另一个方法的里面
    • b: 写错方法名字
    • c: 写错了参数列表
    • d: 方法返回值是void,方法中可以省略return 不写
      return 下面不能有代码
    • e 方法返回值类型,和return 后面数据类型必须匹配
    • f: 方法重复定义问题
    • g: 调用方法的时候,返回值是void, 不能写在输出语句中

09 方法的重载

  • A: 方法的重载

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

    • 参数列表不同:

      • A:参数个数不同
      • B:参数类型不同
      • C:参数的顺序不同(算重载,但是在开发中不用)
  • B: 案例代码

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

10 方法重载注意事项

  • A: 方法重载注意事项
    • a: 参数列表必须不同
    • b: 重载和参数变量名无关
    • c: 重载和返回值类型无关
    • d: 重载和修饰符无关
    • e: 技巧: 重载看方法名和参数列表

11 方法参数是基本数据类型

  • A: 方法参数是基本数据类型
    • a: 方法参数是基本类型时,传递的是值。

12 方法参数是引用数据类型

  • A: 方法参数是引用数据类型
    • a: 方法参数是引用类型时,传递的是内存地址值。

13 随机点名器

  • A: 案例代码

      /*
         实现随机点名器
           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] = "小华";
      	}
      }
    

14 库存案例代码实现_1

* A: 案例代码

	/*
	   实现商品的库存管理
	     功能:
		    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){
			
		}
		
		/*
		   定义方法,展示所有的库存清单,遍历
		   返回值,没有
		   参数, 数组
		*/
		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;
		}
	}

15 库存案例代码实现_2

* A: 案例代码

	/*
	  定义方法,修改所有商品的库存
	    用户输入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();
	}

16 库存案例代码测试

  • A: 案例

      /*
         实现商品的库存管理
           功能:
      	    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;
      	}
      }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值