zoukankan      html  css  js  c++  java
  • 05_java之方法

    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: 方法调用的内存图

    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;
            }
        }
  • 相关阅读:
    [转]Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数
    oracle本月、上月、去年
    Oracle 物理视图刷新报错ORA-00942
    [转]Oracle trunc()函数的用法
    [转]物化视图创建 及 刷新机制修改
    [转]oracle制定定时任务(dbms_jobs)
    【转】Windows平台下的Subversion安装配置新手指南
    【转】数字签名与数字证书
    [转]SQL 常用函数及示例
    【转】视图、索引、存储过程 、触发器、游标及事务
  • 原文地址:https://www.cnblogs.com/alexzhang92/p/9967908.html
Copyright © 2011-2022 走看看