资讯专栏INFORMATION COLUMN

1、方法基础知识 2、方法高级内容 3、方法案例

plus2047 / 3507人阅读

摘要:方法的返回值方法返回什么类型的值我们就用对应的数据类型的变量来接收调用方法执行流程调用方法执行流程方法的定义是没有顺序的,写在函数的上边或者下边都可以。

01方法的概述

</>复制代码

  1. * A: 为什么要有方法
  2. * 提高代码的复用性
  3. * B: 什么是方法
  4. * 完成特定功能的代码块。
02方法的定义格式

</>复制代码

  1. * A: 方法的格式
  2. *
  3. 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
  4. 方法体语句;
  5. return 返回值;
  6. }
  7. * B: 方法的格式说明
  8. * 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
  9. * 返回值类型:就是功能结果的数据类型。
  10. * 方法名:符合命名规则即可。方便我们的调用。
  11. * 参数:
  12. * 实际参数:就是实际参与运算的。
  13. * 形式参数;就是方法定义上的,用于接收实际参数的。
  14. * 参数类型:就是参数的数据类型
  15. * 参数名:就是变量名
  16. * 方法体语句:就是完成功能的代码。
  17. * return:结束方法的。
  18. * 返回值:就是功能的结果,由return带给调用者。
03定义方法计算面积

</>复制代码

  1. * A: 定义方法计算面积
  2. public class MethodDemo{
  3. public static void main(String[] args){
  4. //调用方法, 方法执行起来
  5. // 在方法main中,调用方法 getArea
  6. int area = getArea(5,6);
  7. System.out.println("面积是: "+area);
  8. }
  9. /*
  10. 要求: 计算一个长方形的面积
  11. 定义方法解决这个要求
  12. 分析方法定义过程:
  13. 1.明确方法计算后的结果的数据类型 int 定义格式对应的就是返回值类型
  14. 2.方法计算过程中,有没有未知的数据, 宽和长, 未知数据的数据类型 int
  15. 未知数的变量,定义在方法的小括号内
  16. */
  17. public static int getArea(int w, int h){
  18. //实现方法的功能主体
  19. //int area = w * h;
  20. return w * h;
  21. }
  22. }
04调用方法

</>复制代码

  1. * A: 调用方法
  2. * a: 在main函数中调用方法,让方法执行起来
  3. * b: 方法的形参
  4. * 方法要什么参数我们就给什么类型的参数。
  5. * c: 方法的返回值
  6. * 方法返回什么类型的值我们就用对应的数据类型的变量来接收
05调用方法执行流程

</>复制代码

  1. * A: 调用方法执行流程
  2. * a: 方法的定义是没有顺序的,写在main函数的上边或者下边都可以。
  3. * b: 方法的执行,是把实参传递给形参,从而来执行的。
  4. * c: 方法只有被调用才会执行。
06方法调用的内存图

</>复制代码

  1. * A: 方法调用的内存图
  2. * a: 参见day05day05(Java基础语法)day05_source方法内存图.JPG
07方法调用的练习

</>复制代码

  1. * A: 案例代码
  2. /*
  3. 方法的定义练习
  4. */
  5. import java.util.Scanner;
  6. public class MethodDemo_1{
  7. public static void main(String[] args){
  8. //printRect();
  9. //int number = getNumber();
  10. //System.out.println(getNumber());
  11. //printRect2(3,5);
  12. double avg = getAvg(2,2,3);
  13. System.out.println(avg);
  14. }
  15. /*
  16. 定义有返回值有参数方法,如求三个数的平均值
  17. 明确方法计算后的数据类型, 返回值类型 double
  18. 明确方法未知数, 三个未知的整数
  19. */
  20. public static double getAvg(double a, double b,double c){
  21. return (a+b+c)/3;
  22. }
  23. /*
  24. 定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形
  25. 明确方法计算后结果,控制台输出图形,没有返回值的
  26. 方法中有没有未知数,图形行数,和列数,是未知的, 数据类型整数int
  27. */
  28. public static void printRect2(int m,int n){
  29. for(int i = 0 ; i < m ; i++){
  30. for(int j = 0 ; j < n ; j++){
  31. System.out.print("*");
  32. }
  33. System.out.println();
  34. }
  35. }
  36. /*
  37. 定义有返回值无参数方法,如键盘录入得到一个整数
  38. 明确方法计算后结果的数据类型 int
  39. 明确有没有未知数,没
  40. */
  41. public static int getNumber(){
  42. Scanner sc = new Scanner(System.in);
  43. //int number = sc.nextInt();
  44. return sc.nextInt();
  45. }
  46. /*
  47. 定义无返回值无参数方法,如打印3行,每行3个*号的矩形
  48. 为什么没有返回值:
  49. 打印矩形 ,输出效果,不需要将结果返回
  50. 明确未知数: 不需要未知数
  51. */
  52. public static void printRect(){
  53. for(int i = 0 ; i < 3 ; i++){
  54. for(int j = 0 ; j < 3 ;j++){
  55. System.out.print("*");
  56. }
  57. System.out.println();
  58. }
  59. }
  60. }
08方法的定义和使用的注意事项

</>复制代码

  1. * A: 方法的定义和使用的注意事项
  2. * a: 方法不能定义在另一个方法的里面
  3. * b: 写错方法名字
  4. * c: 写错了参数列表
  5. * d: 方法返回值是void,方法中可以省略return 不写
  6. return 下面不能有代码
  7. * e 方法返回值类型,和return 后面数据类型必须匹配
  8. * f: 方法重复定义问题
  9. * g: 调用方法的时候,返回值是void, 不能写在输出语句中
09方法的重载

</>复制代码

  1. * A: 方法的重载
  2. * 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
  3. * 参数列表不同:
  4. * A:参数个数不同
  5. * B:参数类型不同
  6. * C:参数的顺序不同(算重载,但是在开发中不用)
  7. * B: 案例代码
  8. public static int getSum(int a,int b){
  9. System.out.println("两个int参数");
  10. return a+b;
  11. }
  12. public static int getSum(int a,int b,int c){
  13. System.out.println("三个int参数");
  14. return a+b+c;
  15. }
  16. public static double getSum(double a,double b){
  17. System.out.println("两个double参数");
  18. return a+b;
  19. }
10方法重载注意事项

</>复制代码

  1. * A: 方法重载注意事项
  2. * a: 参数列表必须不同
  3. * b: 重载和参数变量名无关
  4. * c: 重载和返回值类型无关
  5. * d: 重载和修饰符无关
  6. * e: 技巧: 重载看方法名和参数列表
11方法参数是基本数据类型

</>复制代码

  1. * A: 方法参数是基本数据类型
  2. * a: 方法参数是基本类型时,传递的是值。
12方法参数是引用数据类型

</>复制代码

  1. * A: 方法参数是引用数据类型
  2. * a: 方法参数是引用类型时,传递的是内存地址值。
13随机点名器

</>复制代码

  1. * A: 案例代码
  2. /*
  3. 实现随机点名器
  4. 1.存储所有学生姓名
  5. 2.预览所有学生姓名,遍历数组
  6. 3.随机数作为索引,到数组中找元素
  7. 将功能独立出来, 作成方法,调用方法即可
  8. 定义三个功能, 用到同一个姓名数据
  9. 姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数
  10. */
  11. import java.util.Random;
  12. public class CallName{
  13. public static void main(String[] args){
  14. //定义数组,存储学生姓名
  15. String[] names = new String[8];
  16. //调用添加姓名方法
  17. addStudent(names);
  18. //调用遍历数组方法
  19. printStudentName(names);
  20. //调用随机姓名的方法
  21. String name = randomStudentName(names);
  22. System.out.println(name);
  23. }
  24. /*
  25. 定义方法,随机数,做索引,数组中找到学生姓名
  26. 返回值? 学生姓名
  27. 参数? 数组
  28. */
  29. public static String randomStudentName(String[] names){
  30. Random ran = new Random();
  31. int index = ran.nextInt(names.length);
  32. return names[index];
  33. }
  34. /*
  35. 定义方法,遍历数组
  36. 返回值? 没有
  37. 参数? 数组
  38. */
  39. public static void printStudentName(String[] names){
  40. for(int i = 0 ; i < names.length ;i++){
  41. System.out.println(names[i]);
  42. }
  43. }
  44. /*
  45. 定义方法,实现向数组中添加学生姓名
  46. 返回值? 没有,
  47. 参数? 参数就是数组
  48. */
  49. public static void addStudent(String[] names){
  50. names[0] = "张三";
  51. names[1] = "李四";
  52. names[2] = "王五";
  53. names[3] = "李蕾";
  54. names[4] = "韩梅梅";
  55. names[5] = "小名";
  56. names[6] = "老王";
  57. names[7] = "小华";
  58. }
  59. }
14库存案例代码实现_1

</>复制代码

  1. * A: 案例代码
  2. /*
  3. 实现商品的库存管理
  4. 功能:
  5. 1.展示用户选择功能清单
  6. 2.根据选择的功能编号,进行不同的操作
  7. A. 展示所有库存
  8. B. 修改库存数量
  9. 分析:
  10. 1.展示用户清单:
  11. 输出语句, 用户输入, 选择功能序号
  12. 2.根据选择,调用不同的方法
  13. switch语句
  14. case 1 2 3
  15. A 展示库存
  16. 将存储商品的数组,遍历
  17. B 修改库存
  18. 修改所有的库存数量
  19. */
  20. import java.util.Scanner;
  21. public class Shopp{
  22. public static void main(String[] args){
  23. }
  24. /*
  25. 定义方法,展示所有的库存清单,遍历
  26. 返回值,没有
  27. 参数, 数组
  28. */
  29. public static void printStore(String[] brand,double[] size,double[] price,int[] count){
  30. System.out.println("----------商场库存清单----------");
  31. System.out.println("品牌型号 尺寸 价格 库存数");
  32. //定义变量,计算总库存数,和总价格
  33. int totalCount = 0;
  34. int totalMoney = 0;
  35. //遍历数组,将数组中所有的商品信息打印出来
  36. for(int i = 0 ; i < brand.length ; i++){
  37. System.out.println(brand[i]+" "+size[i]+" "+price[i]+" "+count[i]);
  38. totalCount += count[i];
  39. totalMoney += count[i]*price[i];
  40. }
  41. System.out.println("总库存数: "+totalCount);
  42. System.out.println("商品库存总金额: "+totalMoney);
  43. }
  44. /*
  45. 定义方法,实现用户的选择功能,功能的需要返回来
  46. 返回值, int
  47. 参数, 没有
  48. */
  49. public static int chooseFunction(){
  50. System.out.println("-------------库存管理------------");
  51. System.out.println("1.查看库存清单");
  52. System.out.println("2.修改商品库存数量");
  53. System.out.println("3.退出");
  54. System.out.println("请输入要执行的操作序号:");
  55. //接受键盘输入
  56. Scanner sc = new Scanner(System.in);
  57. int chooseNumber = sc.nextInt();
  58. return chooseNumber;
  59. }
  60. }
15库存案例代码实现_2

</>复制代码

  1. * A: 案例代码
  2. /*
  3. 定义方法,修改所有商品的库存
  4. 用户输入1个,修改1个
  5. 返回值,没有
  6. 参数, 库存数的数组, 品名数组
  7. */
  8. public static void update(String[] brand, int[] count){
  9. //遍历数组,遍历到一个,修改一个
  10. //接受键盘输入
  11. Scanner sc = new Scanner(System.in);
  12. //遍历数组
  13. for(int i = 0; i < brand.length ; i++){
  14. System.out.println("请输入"+brand[i]+"的库存数");
  15. //键盘输入,录入库存, 存储到库存的数组中
  16. int newCount = sc.nextInt();
  17. count[i] = newCount;
  18. }
  19. //int chooseNumber = sc.nextInt();
  20. }
16库存案例代码测试

</>复制代码

  1. * A: 案例
  2. /*
  3. 实现商品的库存管理
  4. 功能:
  5. 1.展示用户选择功能清单
  6. 2.根据选择的功能编号,进行不同的操作
  7. A. 展示所有库存
  8. B. 修改库存数量
  9. 分析:
  10. 1.展示用户清单:
  11. 输出语句, 用户输入, 选择功能序号
  12. 2.根据选择,调用不同的方法
  13. switch语句
  14. case 1 2 3
  15. A 展示库存
  16. 将存储商品的数组,遍历
  17. B 修改库存
  18. 修改所有的库存数量
  19. */
  20. import java.util.Scanner;
  21. public class Shopp{
  22. public static void main(String[] args){
  23. //使用数组,保存商品的信息
  24. //品名,尺寸,价格,库存数, 定义5个数组
  25. String[] brand = {"MacBookAir","ThinkpadT450"};
  26. double[] size = {13.3,15.6};
  27. double[] price = {9998.97,6789.56};
  28. int[] count = {0,0};
  29. while(true){
  30. int choose = chooseFunction();
  31. switch(choose){
  32. case 1:
  33. //调用查看库存清单方法
  34. printStore(brand,size,price,count);
  35. break;
  36. case 2:
  37. //调用修改库存的方法
  38. update(brand,count);
  39. break;
  40. case 3:
  41. return ;
  42. default:
  43. System.out.println("没有这个功能");
  44. break;
  45. }
  46. }
  47. }
  48. /*
  49. 定义方法,修改所有商品的库存
  50. 用户输入1个,修改1个
  51. 返回值,没有
  52. 参数, 库存数的数组, 品名数组
  53. */
  54. public static void update(String[] brand, int[] count){
  55. //遍历数组,遍历到一个,修改一个
  56. //接受键盘输入
  57. Scanner sc = new Scanner(System.in);
  58. //遍历数组
  59. for(int i = 0; i < brand.length ; i++){
  60. System.out.println("请输入"+brand[i]+"的库存数");
  61. //键盘输入,录入库存, 存储到库存的数组中
  62. int newCount = sc.nextInt();
  63. count[i] = newCount;
  64. }
  65. //int chooseNumber = sc.nextInt();
  66. }
  67. /*
  68. 定义方法,展示所有的库存清单,遍历
  69. 返回值,没有
  70. 参数, 数组
  71. */
  72. public static void printStore(String[] brand,double[] size,double[] price,int[] count){
  73. System.out.println("----------商场库存清单----------");
  74. System.out.println("品牌型号 尺寸 价格 库存数");
  75. //定义变量,计算总库存数,和总价格
  76. int totalCount = 0;
  77. int totalMoney = 0;
  78. //遍历数组,将数组中所有的商品信息打印出来
  79. for(int i = 0 ; i < brand.length ; i++){
  80. System.out.println(brand[i]+" "+size[i]+" "+price[i]+" "+count[i]);
  81. totalCount += count[i];
  82. totalMoney += count[i]*price[i];
  83. }
  84. System.out.println("总库存数: "+totalCount);
  85. System.out.println("商品库存总金额: "+totalMoney);
  86. }
  87. /*
  88. 定义方法,实现用户的选择功能,功能的需要返回来
  89. 返回值, int
  90. 参数, 没有
  91. */
  92. public static int chooseFunction(){
  93. System.out.println("-------------库存管理------------");
  94. System.out.println("1.查看库存清单");
  95. System.out.println("2.修改商品库存数量");
  96. System.out.println("3.退出");
  97. System.out.println("请输入要执行的操作序号:");
  98. //接受键盘输入
  99. Scanner sc = new Scanner(System.in);
  100. int chooseNumber = sc.nextInt();
  101. return chooseNumber;
  102. }
  103. }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67155.html

相关文章

  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0
  • Python【赋值语句】专讲,可不能只会 a=b 啊!建议掌握!

    摘要:二高级赋值语句何为高级赋值语句就是常规的赋值方法进行操作是会报错的,得进行一些更高级一点的操作。小技巧三举例用赋值语句把列表进行每次减少个元素并输出列表。 从Pyt...

    zlyBear 评论0 收藏0
  • 工行数据中心高级经理 李雁南:接口冒烟测试方法

    摘要:接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。随着案例和执行结果的不断积累,接口测试覆盖会更加充分,统计结果会更加精确。 原文出自【听云技术博客】:http://blog.tingyun.com/web/a... 今年遇到了几个问题,与接口的功能和性能相关,恰巧最近公司也在组织以冒烟测试为主题的活动,于是乎突发奇想,寻思着能否将接口测试与冒烟测试结合起来,发掘一...

    sunny5541 评论0 收藏0
  • 贪心学院-图神经网络高级训练营

    摘要:百度网盘提取码最近一直关注贪心学院的机器学习训练营,发现这门课讲的很有深度,不仅适合职场也适合科研人员,加入行业拿到高薪仅仅是职业生涯的开始。 ​​百度网盘​​提取码:u6C4最近一直关注贪心学院的机器学习训练营,发现这门课讲的很有深度,不仅适合职场也适合科研人员,加入AI行业拿到高薪仅仅是职业生涯的开始。现阶段AI人才结...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

plus2047

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<