杨老师课堂_Java教程第五篇之函数运用

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/78901551 今天主要是讲解以下知识点: 1、方法基础知识 2、方法高级内容 3、方法案例01方法的概述* A: 为什么要有方法(函数) * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/78901551

今天主要是讲解以下知识点:
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: 方法调用的内存图
    * ![这里写图片描述](https://img-blog.csdn.net/20171226134755187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2VzZTc5NTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

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 randomHeroName(String[] names){
            Random ran = new Random();
            int index = ran.nextInt(names.length);
            return names[index];
        }

        /*
           定义方法,遍历数组
           返回值? 没有
           参数? 数组
        */
        public static void printHeroName(String[] names){
            for(int i = 0 ; i < names.length ;i++){
                System.out.println(names[i]);
            }
        }

        /*
           定义方法,实现向数组中添加学生姓名
           返回值? 没有,
           参数?  参数就是数组
        */
        public static void addHero(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;
        }
    }

课后作业

*根据所学知识,常识完成 超市购物系统
项目首期需求:
    实现“佳乐福超市”购物功能
            |--- 如果超市有所需要的物件,则表示消费者买到该商品
            |--- 如果超市没有所需要的物件,则表示消费者白跑一趟

这里写图片描述
作者: 杨校

出处: http://blog.csdn.net/kese7952

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

目录
相关文章
|
9天前
|
IDE Oracle Java
java基础教程(1)-Java概述和相关名词解释
【4月更文挑战第1天】Java是1995年Sun Microsystems发布的高级编程语言,以其跨平台特性著名。它介于编译型和解释型语言之间,通过JVM实现“一次编写,到处运行”。Java有SE、EE和ME三个版本,分别针对标准、企业及嵌入式应用。JVM是Java虚拟机,确保代码在不同平台无需重编译。JRE是运行环境,而JDK包含开发工具。要安装Java开发环境,可从Oracle官网下载JDK,设置JAVA_HOME环境变量并添加到PATH。
|
12天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
35 4
|
11天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
42 0
|
1天前
|
JavaScript Java 测试技术
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
7 0
|
2天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
22 0
|
3天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
4天前
|
Java 索引
Java基础教程(6)-Java中的流程控制语句
【4月更文挑战第6天】Java流程控制包括选择(if, switch)、重复(while, do-while, for)和跳转(break, continue, return)语句。选择语句根据条件执行不同路径,if和switch用于单条件和多条件分支。重复语句用于循环,如for循环的初始化、条件和迭代部分,以及while和do-while循环。跳转语句中,break用于立即退出循环,continue结束当前循环迭代,return则从方法中返回。此外,Java的for each循环简化了数组或集合的遍历,但不能控制遍历顺序或索引。
|
5天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)
【4月更文挑战第11天】按计划今天宏哥继续讲解css的定位元素的方法。但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用。
27 2
|
6天前
|
存储 Java 编译器
Java基础教程(4)-Java中的操作符
【4月更文挑战第4天】Java中的String是常用类,字符串是不可变对象,用双引号表示。String对象在编译期长度受限于65535,运行期不超过Int范围。字符串方法如length()、substring()、replace()、equals()等提供了多种操作。可变字符串可使用StringBuffer或StringBuilder。String对象通过字符串池优化内存,池中已有相同内容字符串则返回其引用。
|
7天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
【4月更文挑战第10天】本文主要介绍了CSS定位元素的几种方法,包括ID属性值定位、其他属性值定位和使用属性值的一部分定位。作者提供了示例代码,展示了如何使用这些方法在Java+Selenium自动化测试中定位网页元素。通过CSS选择器,可以更精确地找到页面上的特定元素,如输入框、按钮等,并进行相应的操作,如输入文本、点击等。文章还提供了实际运行代码后的控制台输出和浏览器动作的示例。
31 0