Java零基础入门笔记6-Java方法

1、简介

  • 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块
  • 方法的声明
    • 方法名的命名规则除了和变量(戳这里温习)的命名规则一致之外,若方法名由一个单词组成,则用小写即可,若由多个单词组成则需满足小骆驼命名法(即首个单词小写后面的单词首字母大写)。
访问修饰符 返回类型 方法名 (参数列表) {
    //方法体
}

2、方法类型

  • 方法分类:根据方法是否带参数,是否有返回值,可以分为4类:

    • 1.无参无返回值方法
    public void noArgsNoReturn() {
        //方法体
    }
    • 2.无参带返回值方法
    public int noArgsWithReturn() {
        int x=5,y=6;
        return x*y;
    }
    • 3.带参无返回值方法
    public void withArgsNoReturn(int a,int b) {
        //方法体
    }
    • 4.带参带返回值方法
    public int withArgsWithReturn(int a, int b) {
        return a * b;
    }
    • 5.在主方法中使用这些方法(仅作为演示,运行略)
      public static void main(String[] args) {
          MethodDemo mMethodDemo = new MethodDemo();
      
          mMethodDemo.noArgsNoReturn();
      
          int c = mMethodDemo.noArgsWithReturn();
      
          mMethodDemo.withArgsNoReturn(5, 6);
      
          int d = mMethodDemo.withArgsWithReturn(10, 20);
      }

3、数组作为方法参数

  • 1.定义一个方法,打印输出数组元素的值。代码如下:
public class ArrayAsMethodArgs {
    public static void main(String[] args) {
        int[] arr = { 10, 20, 30, 40, 50 };
        ArrayAsMethodArgs arrayAsMethodArgs = new ArrayAsMethodArgs();
        arrayAsMethodArgs.printArray(arr);
    }

    public void printArray(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}
  • 2.运行结果如下所示。
    这里写图片描述
  • 3.再来演示一个例子:查找数组元素的值,则传入方法的参数分别为数组要查找的元素,修改上面的代码。
public class ArrayAsMethodArgs {
    public static void main(String[] args) {
        int[] arr = { 10, 20, 30, 40, 50 };
        System.out.println("请输入一个整数:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        ArrayAsMethodArgs arrayAsMethodArgs = new ArrayAsMethodArgs();
        boolean b = arrayAsMethodArgs.printArray(arr, n);
        if (b == true) {
            System.out.println("找到了!");
        } else {
            System.out.println("没找到!");
        }
        scanner.close();
    }

    public boolean printArray(int[] arr, int a) {
        boolean flag = false;
        for (int i : arr) {
            if (i == a) {
                flag = true;
                break;
            }
        }
        return flag;
    }
}
  • 4.运行结果如下。
    这里写图片描述

4、方法重载

  • 所谓方法重载即方法名相同,参数列表不同,如下代码所示:
public class MethodReload {
    public static void main(String[] args) {
        MethodReload mReload=new MethodReload();
        mReload.name();
        mReload.name("");
        mReload.name(1.0, 2);
        mReload.name(1000,1000);
    }

    public void name(int a, int b) {

    }

    public void name(double a,int b) {

    }

    public void name() {

    }

    public void name(String s) {

    }
}

5、方法传值

  • 1.看下列一个演示,交换两个变量的值,代码如下。
public class ExchangeDemo {
    public static void main(String[] args) {
        int m = 4, n = 5;
        System.out.println("交换前:m=" + m + ",n=" + n);
        ExchangeDemo.swap(m, n);
        System.out.println("交换后:m=" + m + ",n=" + n);
    }

    // 这里定义一个静态方法,则在主方法中可以直接使用[类.方法]名而不用实例化对象
    public static void swap(int a, int b) {
        int temp;
        System.out.println("交换前:a=" + a + ",b=" + b);
        temp = a;
        a = b;
        b = temp;
        System.out.println("交换后:a=" + a + ",b=" + b);
    }
}
  • 2.运行结果如下。
    这里写图片描述
  • 3.结果分析:从上面的结果可以看出,m和n的值并没有交换。这是由于在主方法当中定义m,n值的时候,是在内存中分别为m和n开辟了空间,把4的值存放到m当中,把5的值存放到n当中,当进行方法调用的时候,把m,n的值传给了变量a,b,这时候只是把4和5两个值传过去了,并没有把变量的地址传过去,而传过去值之后,a和b发生了交换,因此a和b进行了互换,而m和n的值不变。关于详细解释请看这篇博客:理解Java中的引用传递和值传递,请参考博客自行尝试传递其他类型数据。
  • 4.补充:在方法中通过对象作为参数,传递的是它的引用,可以通过引用获取该对象的所有信息。

6、可变参数列表

6.1、可变参数列表

  • 1.可变参数列表的形式为以下方法sum中的参数形式。
public class VariableArgsList {
    public static void main(String[] args) {
        VariableArgsList.sum(1);
        VariableArgsList.sum(1, 2, 3);
        VariableArgsList.sum(1, 2, 3, 4);
    }

    public static void sum(int... n) {
        int sum = 0;
        for (int i : n) {
            sum += i;
        }
        System.out.println("sum=" + sum);
    }
}
  • 2.运行结果如下。
    这里写图片描述
    注意:
  • 若方法的参数既有其他类型的参数,也有可变参数列表,一定要将可变参数列表放置在最后一个参数的位置。例如public static void sum(int a, int b, int... n) {}
  • 可以将数组传递给可变参数列表的,但是不能将可变参数列表(即多个值)传递给数组(数组作为参数时)。
  • 一个方法中的参数只允许有一个可变参数列表。

6.2、可变参数列表作为方法参数的重载问题

  • 1.编写代码如下,看看会优先调用哪个方法?
public class VariableArgsList {
    public static void main(String[] args) {
        VariableArgsList val = new VariableArgsList();
        System.out.println("和为:" + val.plus(1, 2));
    }

    public int plus(int a, int b) {
        System.out.println("不带可变参数列表的方法被调用!");
        return a + b;
    }

    public int plus(int... n) {
        int sum = 0;
        for (int i : n) {
            sum += i;
        }
        System.out.println("带可变参数列表的方法被调用!");
        return sum;
    }
}
  • 2.运行代码发现,不带可变参数列表的方法被调用了。这里我们要知道,带可变参数列表的方法是最后被访问的
    这里写图片描述

7、文档注释

  • 之所以叫文档注释,是因为这个注释如果通过命令去执行的话,可以将注释当中的内容提取出来,生成程序的帮助文档(记住在编写完成代码后保存一下代码内容,以便按预期生成文档内容)。
  • 1.编写文档注释如下图所示。
    这里写图片描述
  • 2.生成帮助文档则需要借助cmd(使用快捷键:Windows+X可快速找到)来生成帮助文档。
    所用命令:
    1. cd /d 文件路径 手写命令式,路径要用反斜杠,也可直接复制文件所在路径
    2. javadoc -d doc 类名 后面一定要带上.java

这里写图片描述

猜你喜欢

转载自blog.csdn.net/chaixingsi/article/details/81874073