网站搭建模板素材,简单的html网页制作模板免费,网站建设商家公司,网站开发课题背景方法 1.1 方法概述 在我们的日常生活中#xff0c;方法可以理解为要做某件事情#xff0c;而采取的解决办法。 如#xff1a;小明同学在路边准备坐车来学校学习。这就面临着一件事情#xff08;坐车到学校这件事情#xff09;需要解决#xff0c;解决办法呢#xf… 方法 1.1 方法概述 在我们的日常生活中方法可以理解为要做某件事情而采取的解决办法。 如小明同学在路边准备坐车来学校学习。这就面临着一件事情坐车到学校这件事情需要解决解决办法呢可采用坐公交车或坐出租车的方式来学校那么这种解决某件事情的办法我们就称为方法。 在java中方法就是用来完成解决某件事情或实现某个功能的办法。 方法实现的过程中会包含很多条语句用于完成某些有意义的功能——通常是处理文本控制输入或计算数值。 我们可以通过在程序代码中引用方法名称和所需的参数实现在该程序中执行或称调用该方法。方法一般都有一个返回值用来作为事情的处理结果。 1.2 方法的语法格式 在Java中声明一个方法的具体语法格式如下 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,){ 执行语句 ……… return 返回值; } 对于上面的语法格式中具体说明如下 修饰符方法的修饰符比较多有对访问权限进行限定的有静态修饰符static还有最终修饰符final等这些修饰符在后面的学习过程中会逐步介绍 返回值类型用于限定方法返回值的数据类型 参数类型用于限定调用方法时传入参数的数据类型 参数名是一个变量用于接收调用方法时传入的数据 return关键字用于结束方法以及返回方法指定类型的值 返回值被return语句返回的值该值会返回给调用者 需要特别注意的是方法中的“参数类型 参数名1参数类型 参数名2”被称作参数列表它用于描述方法在被调用时需要接收的参数如果方法不需要接收任何参数则参数列表为空即()内不写任何内容。方法的返回值必须为方法声明的返回值类型如果方法中没有返回值返回值类型要声明为void此时方法中return语句可以省略。 接下来通过一个案例来演示方法的定义与使用如下图所示。MethodDemo01.java public class MethodDemo01 {public static void main(String[] args) {int area getArea(3, 5); // 调用 getArea方法System.out.println( The area is area);}// 下面定义了一个求矩形面积的方法接收两个参数其中x为高y为宽public static int getArea(int x, int y) {int temp x * y; // 使用变量temp记住运算结果return temp; // 将变量temp的值返回}
} 运行结果如下图所示。 在上述代码中定义了一个getArea()方法用于求矩形的面积参数x和y分别用于接收调用方法时传入的高和宽return语句用于返回计算所得的面积。在main()方法中通过调用getArea()方法获得矩形的面积并将结果打印。 1.3 方法调用图解 接下来通过一个图例演示getArea()方法的整个调用过程如下图所示。 从上图中可以看出在程序运行期间参数x和y相当于在内存中定义的两个变量。当调用getArea()方法时传入的参数3和5分别赋值给变量x和y并将x*y的结果通过return语句返回整个方法的调用过程结束变量x和y被释放。 1.4 方法定义练习 分别定义如下方法 定义无返回值无参数方法如打印3行每行3个*号的矩形 定义有返回值无参数方法如键盘录入得到一个整数 定义无返回值有参数方法如打印指定M行每行N个*号的矩形 定义有返回值有参数方法如求三个数的平均值 无返回值无参数方法如打印3行每行3个*号的矩形 public static void printRect(){//打印3行星for (int i0; i3; i) {//System.out.println(***); 相当于是打印3颗星换行//每行打印3颗星for (int j0; j3; j) {System.out.print(*); // ***}System.out.println();}} 有返回值无参数方法如键盘录入得到一个整数 public static int getNumber(){Scanner sc new Scanner(System.in);int number sc.nextInt();return number;} 无返回值有参数方法如打印指定M行每行N个*号的矩形 public static void printRect2(int m, int n){//打印M行星for (int i0; im; i) {//每行中打印N颗星for (int j0; jn; j) {System.out.print(*); }System.out.println();}} 有返回值有参数方法如求三个数的平均值 public static double getAvg(double a, double b, double c) {double result (abc)/3;return result;} 1.5 方法的重载 我们假设要在程序中实现一个对数字求和的方法由于参与求和数字的个数和类型都不确定因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能具体实现如下所示。MethodDemo02.java public class MethodDemo02 {public static void main(String[] args) {// 下面是针对求和方法的调用int sum1 add01(1, 2);int sum2 add02(1, 2, 3);double sum3 add03(1.2, 2.3);// 下面的代码是打印求和的结果System.out.println(sum1 sum1);System.out.println(sum2 sum2);System.out.println(sum3 sum3);}// 下面的方法实现了两个整数相加public static int add01(int x, int y) {return x y;}// 下面的方法实现了三个整数相加public static int add02(int x, int y, int z) {return x y z;}// 下面的方法实现了两个小数相加public static double add03(double x, double y) {return x y;}
} 运行结果如下图所示。 从上述代码不难看出程序需要针对每一种求和的情况都定义一个方法如果每个方法的名称都不相同在调用时就很难分清哪种情况该调用哪个方法。 为了解决这个问题Java允许在一个类中定义多个名称相同的方法但是参数的类型或个数必须不同这就是方法的重载。 下面的三个方法互为重载关系 public static int add(int x,int y) {逻辑} //两个整数加法public static int add(int x,int y,int z) {逻辑} //三个整数加法public static int add(double x,double y) {逻辑} //两个小数加法 接下来通过方法重载的方式进行修改如下所示。MethodDemo03.java public class MethodDemo03 {public static void main(String[] args) {// 下面是针对求和方法的调用int sum1 add(1, 2);int sum2 add(1, 2, 3);double sum3 add(1.2, 2.3);// 下面的代码是打印求和的结果System.out.println(sum1 sum1);System.out.println(sum2 sum2);System.out.println(sum3 sum3);}// 下面的方法实现了两个整数相加public static int add(int x, int y) {return x y;}// 下面的方法实现了三个整数相加public static int add(int x, int y, int z) {return x y z;}// 下面的方法实现了两个小数相加public static double add(double x, double y) {return x y;}
} MethodDemo02.java的运行结果和MethodDemo03.java一样如下图所示。 上述代码中定义了三个同名的add()方法它们的参数个数或类型不同从而形成了方法的重载。 在main()方法中调用add()方法时通过传入不同的参数便可以确定调用哪个重载的方法如add(1,2)调用的是两个整数求和的方法。值得注意的是方法的重载与返回值类型无关它只有两个条件一是方法名相同二是参数个数或参数类型不相同。 1.5.1 重载的注意事项 重载方法参数必须不同
参数个数不同如method(int x)与method(int x,int y)不同
参数类型不同如method(int x)与method(double x)不同g
参数顺序不同如method(int x,double y)与method(double x,int y)不同重载只与方法名与参数类型相关与返回值无关
如void method(int x)与int method(int y)不是方法重载不能同时存在重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载不能同时存在 1.5.2 参数传递 参数传递可以理解当我们要调用一个方法时我们会把指定的数值传递给方法中的参数这样方法中的参数就拥有了这个指定的值可以使用该值在方法中运算了。这种传递方式我们称为参数传递。 在这里定义方法时参数列表中的变量我们称为形式参数 调用方法时传入给方法的数值我们称为实际参数 我们看下面的两段代码来明确下参数传递的过程 public class ArgumentsDemo01 {public static void main(String[] args) {int a5;int b10;change(a, b);//调用方法时传入的数值称为实际参数System.out.println(a a);System.out.println(b b);}public static void change(int a, int b){//方法中指定的多个参数称为形式参数a200;b500;}
} 程序的运行结果如下 再看另一段代码 public class ArgumentsDemo02 {public static void main(String[] args) {int[] arr { 1, 2, 3 };change(arr);// 调用方法时传入的数值称为实际参数for (int i 0; i arr.length; i) {System.out.println(arr[i]);}}public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数for (int i 0; i arr.length; i) {arr[i] * 2;}}
} 程序的运行结果如下 1.5.3 参数传递图解与结论 通过上面的两段程序可以得出如下结论 当调用方法时如果传入的数值为基本数据类型包含String类型形式参数的改变对实际参数不影响 当调用方法时如果传入的数值为引用数据类型String类型除外形式参数的改变对实际参数有影响 随机点名器案例 2.1 案例介绍 随机点名器即在全班同学中随机的打印出一名同学名字。 要做的随机点名器它具备以下3个内容 存储所有同学姓名 总览全班同学姓名 随机点名其中一人打印到控制台 2.2 案例需求分析 在全班同学中随机的打印出一名同学名字。 我们对本案例进行分析得出如下分析结果 1.存储全班同学名字 2.打印全班同学每一个人的名字 3.在班级总人数范围内随机产生一个随机数查找该随机数所对应的同学名字 该案例须有以下3个内容 存储所有同学姓名 总览全班同学姓名 随机点名其中一人打印到控制台 随机点名器明确地分为了三个功能。如果将多个独立功能的代码写到一起则代码相对冗长我们可以针对不同的功能可以将其封装到一个方法中将完整独立的功能分离出来。 而在存储同学姓名时如果对每一个同学都定义一个变量进行姓名存储则会出现过多孤立的变量很难一次性将全部数据持有。此时我们可以使用数组解决多个数据的存储问题。 2.3 实现代码步骤 编写CallName.java文件完成程序的编写。 main方法中调用三个独立方法 public static void main(String[] args) {System.out.println(--------随机点名器--------);// 创建一个存储多个同学名字的容器数组String[] students new String[3];/** 1.存储全班同学名字*/addStudentName(students);/** 2.打印全班同学每一个人的名字*/printStudentName(students);/** 3.获取随机点名到的学生姓名并打印*/String randomName randomStudentName(students);System.out.println(被点到名的同学是 : randomName);} 1.存储所有同学姓名 /*** 1.存储全班同学名字* 创建一个存储多个同学名字的容器数组 * 键盘输入每个同学的名字存储到容器中数组*/public static void addStudentName(String[] students) {//键盘输入多个同学名字存储到容器中Scanner sc new Scanner(System.in);for (int i 0; i students.length; i) {System.out.println(存储第i个名称);students[i] sc.next();}} 上述方法中通过键盘录入完成为指定数组元素赋值。方法定义时将参数定义为字符串数组用于接收存放的同学姓名。 打印全班同学每一个人的名字 /*** 2打印全班同学每一个人的名字*/public static void printStudentName(String[] students) {//遍历数组得到每个同学名字for (int i 0; i students.length; i) {String name students[i];//打印同学名字System.out.println(第i个学生名称 name);}} 上述方法中方法参数students数组中存储了所有学生的姓名。 通过遍历将数组中的每一个元素访问一遍得到每一个同学名称。 3.获取随机点到的学生姓名 /*** 3.在班级总人数范围内随机产生一个随机数,返回随机数位置上的学生姓名*/ public static String randomStudentName(String[] students) {//根据数组长度获取随机索引int index new Random().nextInt(students.length);//通过随机索引从数组中获取名称String name students[index];//返回随机点到的名称return name;} 上述方法中通过随机数类Random产生一个从0到数组长度的随机索引。使用该索引获取students数组中对应的值便得到了全班同学的随机姓名。 库存管理案例 3.1 案例介绍 现在我们将原有的库存管理案例进行业务逻辑的封装。 将对下列功能进行方法封装 打印库存清单功能 库存商品数量修改功能 退出程序功能 3.2 案例需求分析 管理员能够进行的操作有3项查看、修改、退出我们可以采用switch菜单的方式来完成。 -------------库存管理------------ 1.查看库存清单 2.修改商品库存数量 3.退出 请输入要执行的操作序号 每一项功能操作我们采用方法进行封装这样可使程序的可读性增强。 选择“1.查看库存清单”功能则控制台打印库存清单 选择“2.修改商品库存数量”功能则对每种商品库存数进行更新 选择“3.退出”功能则退出库存管理程序结束 3.3 实现代码步骤 编写代码Demo库存管理.java完成如下功能 功能菜单 /*** 库存管理功能菜单* return 管理员键盘输入的功能操作序号 */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 choose sc.nextInt();return choose;} 上述方法用来完成库存管理功能菜单的显示、接收管理员选择的功能操作序号。这是完成了案例的第一步。接下来完成“查看、修改、退出”这三项功能。 编写main主方法调用库存管理功能菜单方法与“查看、修改、退出”这三个方法。 public static void main(String[] args) {//记录库存商品信息//品牌型号String[] brands new String[]{MacBookAir, ThinkpadT450};//尺寸大小double[] sizes new double[]{13.3, 14.0};//价格double[] prices new double[]{6988.88, 5999.99};//库存个数int[] counts new int[]{0, 0};//通过while循环模拟管理员进行功能重复选择操作while (true) {//打印功能菜单操作,接收键盘输入的功能选项序号int choose chooseFunction();//执行序号对应的功能switch (choose) {case 1://查看库存清单printStore(brands, sizes, prices, counts);break;case 2://修改商品库存数量update(brands, counts);break;case 3://退出exit();return;default:System.out.println(----------------------------------);System.out.println(功能选择有误请输入正确的功能序号!);break;}}} 在主方法中创建了5个数组分别用来存储商品的品牌型号、尺寸大小、价格、配置、库存个数通过接收到的功能选项序号进行switch语句判断后调用对应的功能方法。 查看库存清单功能 /*** 查看库存清单* param brands 商品品牌型号* param sizes 商品尺寸大小 * param prices 商品价格* param counts 商品库存个数*/public static void printStore(String[] brands, double[] sizes, double[] prices, int[] counts) {//统计总库存个数、统计库存总金额int totalCount 0;double totalMoney 0.0;for (int i 0; i brands.length; i) {totalCount counts[i];totalMoney counts[i] * prices[i];}//列表顶部System.out.println(---------------------------查看库存清单--------------------------);System.out.println(品牌型号 尺寸 价格 库存数);//列表中部for (int i 0; i brands.length; i) {System.out.println(brands[i] sizes[i] prices[i] counts[i]);}//列表底部System.out.println(-------------------------------------------------------------);System.out.println(总库存数totalCount); System.out.println(库存商品总金额totalMoney);} 上述方法用来完成打印库存清单功能5个方法参数用来打印的库存商品相关信息 修改商品库存数量功能 /*** 修改商品库存数量* param brands 商品品牌型号* param counts 商品库存个数*/public static void update(String[] brands, int[] counts){System.out.println(------------修改商品库存数量-----------);for (int i 0; i brands.length; i) {System.out.println(请输入 brands[i] 商品库存数);counts[i] new Scanner(System.in).nextInt();}} 上述方法用来完成修改商品库存数量功能2个方法参数用来指定所要修改的商品与库存数 退出功能 /*** 退出*/public static void exit(){System.out.println(----------------退出---------------);System.out.println(您已退出系统);} 上述方法用来完成退出程序的功能 总结 4.1 知识点总结 方法 格式 修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) { 方法体; return 返回值; } 方法使用的注意事项 1方法不调用自己不执行 2方法中不能定义方法 但是方法中可以调用方法 3, 方法定义的位置在类中其他方法的外面 4, 如果方法没有明确的返回值类型使用空类型 void表示 5void只能在方法返回值类型位置使用不能作为 普通的数据类型使用 6, 如果方法返回值类型为void类型可以省略 return ; 方法调用方式 有明确返回值类型的方法调用方式 1单独调用 2输出调用 3赋值调用 没有明确返回值类型的方法调用方式 1 单独调用 方法重载 方法重载在同一个类中出现了多个同名的方法他们的参数列表不同 (参数列表的个数不同参数列表的数据类型不同参数列表的顺序不同)。 方法重载特点 与方法的返回值类型无关与方法的参数名无关只看方法名与参数列表 方法重载是通过JVM来完成同名方法的调用的通过参数列表来决定调用的是哪一个方法。 转载于:https://www.cnblogs.com/759hongcheng/p/8350070.html