• 2017.9.1 Java中的程序方法


    今日内容介绍
    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: 参见day05day05(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;
    		}
    	}
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/qichunlin/p/7718415.html
Copyright © 2020-2023  润新知