什么是方法
用来解决一类问题的代码的有序组合,是一个功能模块

方法声明

语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}

  1. public class HelloImooc {
  2. // 方法声明
  3. public static void main(String[] args) {
  4. // 方法体
  5. }
  6. }

方法调用

在main函数中调用方法,需要先创建类对象,然后调用对象的方法

  1. package com.imooc;
  2. public class HelloImooc {
  3. // 输出打印星号的方法
  4. public void printStar() {
  5. System.out.println("**********");
  6. }
  7. public static void main(String[] args) {
  8. // 创建一个HelloImooc类的对象myHelloImooc
  9. HelloImooc myHelloImooc = new HelloImooc();
  10. // 使用对象名.方法名()去调用方法
  11. myHelloImooc.printStar();
  12. System.out.println("hello java");
  13. myHelloImooc.printStar();
  14. }
  15. }

在其他函数中,可以直接调用方法

  1. package com.imooc;
  2. public class HelloImooc {
  3. public void printStar() {
  4. System.out.println("**********");
  5. }
  6. public void printTest() {
  7. printStar();
  8. System.out.println("hello java");
  9. printStar();
  10. }
  11. public static void main(String[] args) {
  12. HelloImooc myHelloImooc = new HelloImooc();
  13. myHelloImooc.printTest();
  14. }
  15. }

方法重载

方法名相同,参数列表不同(可以是数量不同,也可以是数据类型不同)
#注意返回值不同,不是重载

  1. package com.imooc;
  2. public class HelloImooc {
  3. // 求两个int类型数的和
  4. public int plus(int m, int n) {
  5. return m + n;
  6. }
  7. // 求两个double类型数的和
  8. public double plus(double m, double n) {
  9. return m + n;
  10. }
  11. // 求数组元素的和
  12. public int plus(int[] arr) {
  13. int sum = 0;
  14. for (int n : arr) {
  15. sum += n;
  16. }
  17. return sum;
  18. }
  19. public static void main(String[] args) {
  20. HelloImooc hl = new HelloImooc();
  21. System.out.println(hl.plus(5, 6)); // 11
  22. System.out.println(hl.plus(5.2, 6.3)); // 11.5
  23. int[] arr = { 1, 2, 3, 4, 5, 6 };
  24. System.out.println(hl.plus(arr)); // 21
  25. }
  26. }

参数传递

1,值传递:传递基本类型数据
值传递不会改变原来的参数的值

  1. package com.imooc;
  2. public class HelloImooc {
  3. // 更新数组
  4. public void updateNum(int num) {
  5. num++;
  6. System.out.println("被调用函数中的值:"+num); // 被调用函数中的值:11
  7. }
  8. public static void main(String[] args) {
  9. int num = 10;
  10. HelloImooc myHelloImooc = new HelloImooc();
  11. myHelloImooc.updateNum(num);
  12. System.out.println("主函数中的值:"+num); // 主函数中的值:10
  13. }
  14. }

2,地址传递:传递引用类型数据(比如数组,对象)
地址传递可能改变原来的参数的值

  1. package com.imooc;
  2. public class HelloImooc {
  3. // 更新数组
  4. public void updateArray(int[] arr) {
  5. arr[3] = 15;
  6. }
  7. // 打印数组
  8. public void printArray(int[] arr) {
  9. for (int n : arr) {
  10. System.out.print(n + " ");
  11. }
  12. System.out.println();
  13. }
  14. public static void main(String[] args) {
  15. int[] arr = { 1, 2, 3, 4, 5, 6 };
  16. HelloImooc myHelloImooc = new HelloImooc();
  17. myHelloImooc.printArray(arr); // 1 2 3 4 5 6
  18. myHelloImooc.updateArray(arr);
  19. myHelloImooc.printArray(arr); // 1 2 3 15 5 6
  20. }
  21. }

可变参数

  • 可变参数与数组类似,可以用增强for循环取值
  • 参数列表中如果有两个以上的参数,可变参数一定是放在最后的
  • 一个方法中只能有一个可变参数
  • 可以将数组传递给可变参数列表
  • 可变参数列表所在的方法是最后被访问的 ```java package com.imooc;

public class HelloImooc { // 求和 public void sum(int… n) { int sum = 0; for (int i : n) { sum += i; } System.out.println(“sum=” + sum); }

  1. public static void main(String[] args) {
  2. HelloImooc myHelloImooc = new HelloImooc();
  3. myHelloImooc.sum(1); // sum=1
  4. myHelloImooc.sum(1, 2); // sum=3
  5. myHelloImooc.sum(1, 2, 3); // sum=6
  6. int[] a = { 10, 20, 30 };
  7. myHelloImooc.sum(a); // sum=60
  8. }

} ```