JAVA SE — Day 05

目 录

第1章 方法
1.1 方法概述
1.2 定义方法的语法格式
1.3 方法调用
1.4 方法定义练习
1.5 方法的重载
1.5.1 重载的注意事项
1.5.2 参数传递
第2章 随机点名机制 案例
第3章 库存管理 案例

第1章 方法

1.1方法概述

①为什么要有方法
* 提高代码的复用性
②什么是方法
* 完成特定功能的代码块。

1.2定义方法的语法格式

1)定义方法的格式:


修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体语句;
return 返回值;
}


2)方法的格式说明


  • 修饰符:目前就用 public static。后面再讲解其他的修饰符。
  • 返回值类型:方法在运行后,会结果,那么结果的类型就是返回值类型。
  • 方法名:自定义满足标识符规范即可。方法名字首字母小写,其余单词每个首字母大写。
  • 参数列表:方法的运算过程中是否有未知数据,如果有则定义在列表中,即参数类型 参数1……等等。
  • 方法体语句:就是完成功能的代码,里边可以包含循环/判断/变量/比较/运算等。
  • return:结束方法。
  • 返回值:就是功能的结果,由return带给调用者。

3)练习案例: 计算一个长方形的面积

① 分析方法定义过程:

  1.明确方法计算后的结果的数据类型,int,定义格式对应的就是返回值类型。
  2.方法计算过程中有没有未知数据,有,就是长和宽,未知数据的数据类型就是int。

【注意:代码编写时必须写在类中,且不能在另一个方法之内】

② 定义方法代码编写(这里只是定义方法并不能输出,因为没有调用方法):

public static int  getArea(int w, int h){
                //实现方法的功能主体
                //int area = w * h;
                return w * h;
            }
1.3方法调用

①在main函数中调用方法,让方法执行起来,同时方法返回什么类型的值我们就用对应的数据类型的变量在main中接收
比如上一例子中的调用:
这里写图片描述

②调用方法执行流程

a: 方法的定义是没有顺序的,写在main函数的上边或者下边都可以。

b: 方法只有被调用才会执行。

③方法调用的图解

这里写图片描述
④方法调用的内存图

这里写图片描述

1.4方法定义练习

1)

/*
       定义无返回值无参数方法,如打印3行每行三个“*”的矩形。
        为什么没有返回值,因为打印矩形不需要将结果返回
        不需要未知数
 */
public class MethdDemo {
 public static void printRect() {
     for(int i= 0;i<3;i++) {
         for(int j= 0;j<3;j++) {
             System.out.print("*");
         }System.out.println();
     }


 }
 public static void main(String[] args) {
     printRect();
}
}

2)

/*
       定义有返回值无参数方法,如
 */
import java.util.Scanner; 
public class MethdDemo {
   public static void main(String[] args) {
    //int number=getNumber();简化
     System.out.println(getNumber() );
   }    

   public static int getNumber() {
     Scanner sc = new Scanner (System.in);
     //int number = sc.nextInt();简化
     return sc.nextInt();

   }
}

3)

/*
       定义无返回值有参数方法,如打印指定M行,每行N个*号
   明确方法计算结果,控制台输出图形,没有返回值
  有没有未知数,行数和列数是未知量,数据类型int    
 */

public class MethdDemo {
    public static void main(String[] args) {
        printRect2(4, 3);
    }

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

4)

/*
       定义有返回值有参数方法,如三個數的平均值
   明确方法计算结果,返回值int
  有没有未知数,三個未知數,数据类型int    
 */

public class MethdDemo {
    public static void main(String[] args) {
        System.out.println(getAvg(1,2,3));
    }

    public static int getAvg(int a, int b,int c) {
        return (a+b+c)/3;
            }
}

5)方法定义和调用的注意事项:

①不能定义在另一个方法里
②写错方法名字,严格区分大小写
③写错参数列表
④方法返回值是void(单向的意思),方法中可以省略return 不写,
如果写return则return下面不能有任何代码
⑤方法返回值类型,和return 后面数据类型必须匹配
⑥方法重复定义问题,不允许
⑦调用方法的时候,返回值是void,意味没有返回值, 则方法不能写在输出语句中

1.5方法的重载

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

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

例如:

/*
       定义有返回值有参数方法,如三個數的平均值
   明确方法计算结果,返回值int
  有没有未知数,三個未知數,数据类型int    
 */

public class MethdDemo {
    public static void main(String[] args) {

        System.out.println();
        //int sum = getSum(2,3,3); //输出结果为“三个int参数   8”
        double sum = getSum(2,3.5);//输出结果为“一个int参数和一个double参数    5.5”
        System.out.println(sum);
    }

    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(int a,double b){
        System.out.println("一个int参数和一个double参数");
        return a+b;
    }
}
1.5.1重载的注意事项
  • a: 参数列表必须不同
  • b: 重载和参数变量名无关
  • c: 重载和返回值类型无关
  • d: 重载和修饰符无关
  • e: 技巧: 重载看方法名和参数列表

    关于重载的设定:
    可以:这里写图片描述
    但不可以:这里写图片描述

1.5.2参数传递

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

图解:
这里写图片描述
② 方法参数是引用数据类型:方法参数是引用类型时,传递的是内存地址值。

这里写图片描述

第2章 随机点名机制 案例

2.1案例介绍

与上一节课的案例相同,要求在屏幕出现全面班同学的姓名,并随机出现一位同学姓名。

2.2需求分析
1. 存储所有学生姓名
2. 预览所有学生姓名,遍历数组
3. 随机数作为索引,到数组中找名字元素

与上一节不同在于将功能独立出来, 作成方法,调用方法即可
定义三个功能, 用到同一个姓名数据,姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数。

2.3实现代码步骤
import java.util.Random;
public class CallName_2{
    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] = "小华";
    }
}

第3章 库存管理案例

3.1案例介绍

1.展示用户选择功能清单

2.根据选择的功能编号,进行不同的操作
A. 展示所有库存
B. 修改库存数量

3.2需求分析

分析:

1.展示用户清单:
               输出语句, 用户输入, 选择功能序号
2.根据选择,调用不同的方法
               switch语句
                  case 1 2 3

A 展示库存: 将存储商品的数组,遍历
B 修改库存:修改所有的库存数量

3.3实现代码步骤
    /*
           实现商品的库存管理
             功能:
                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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值