[するJavaSE]方法

使用する基本的な方法

この方法は何ですか

この方法は、コードスニペットである。C言語の「関数」と同様

  1. モジュラー組織コードが可能である(時、コードサイズがより複雑になっています)。
  2. コードの再利用が行われ、コードが複数の位置で使用することができます。
  3. よりよく理解するために、コードをより簡単に

たとえば:2つの整数を追加することによって実施される方法を達成するために

public class Solution {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
    // 方法的调用
        int ret = add(a, b);
        System.out.println("ret = " + ret);
    }
    // 方法的定义
    public static int add(int x, int y) {
        return x + y;
    }
}
  1. 定義方法は、何のパラメータが存在しないことがある。各パラメータのタイプを指定します
  2. メソッドの定義は、値を返すことができない場合は、戻り値のない場合、値は無効と戻り値の型を記述する必要があります
  3. パラメータは、パラメータがメソッドが呼び出され、「引数」と呼ばれ、「パラメータが」メソッドを定義していると呼ばれています。
  4. メソッドの定義は、クラスにすることができるの上部または下部に位置を呼び出すためのコードを記述する必要があります

引数とパラメータの関係

例で見てみましょう:

public class Solution {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);
        System.out.println("a = " + a + " b = " + b);
    }
    public static void swap(int x, int y) {
        int tmp = x;
        x = y;
        y = tmp;
    }
}

ここに画像を挿入説明
私たちは、データの交換が完了していない、このコード生成を見てください。
理由:ベースタイプ、引数に対応するパラメータ、すなわちコピーを。コールで

溶液:(この問題を解決するための配列として)参照型パラメータを渡します

public class Solution {
    public static void main(String[] args) {
        int[] arr = {10, 20};
        swap(arr);
        System.out.println("a = " + arr[0] + " b = " + arr[1]);
    }
    public static void swap(int[] arr) {
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }
}

ここに画像を挿入説明
パラメータは、基本データ型である場合、値が渡される(または要素の内容をコピー)されます。パラメータの変更は、引数には影響を与えません。
参照データ型のパラメータは、渡された値は、アドレス(基準)である場合。パラメータの変更は、引数に影響します。

オーバーロードされたメソッド

利点:

  • 命名トラブルの問題を解決
  • 呼び出し側は名前にあまりにも多くの方法を覚えていません
public class Solution {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a, b);
        System.out.println("ret = " + ret);
        double a2 = 10.5;
        double b2 = 20.5;
        double ret2 = add(a2, b2);
        System.out.println("ret2 = " + ret2);
        double a3 = 10.5;
        double b3 = 10.5;
        double c3 = 20.5;
        double ret3 = add(a3, b3, c3);
        System.out.println("ret3 = " + ret3);
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(double x, double y, double z) {
        return x + y + z;
    }
}

メソッド呼び出しの名前を追加しますが、計算のint型の追加に加え、いくつかの二重の合計があり、いくつかの2つの数値を加算し、3つのいくつかの計算された数
の単語が追加されますが。
同じ名前の方法は、実現の異なるバージョンを提供するために、この方法は、リロードと呼ばれる
注:データ・タイプまたはパラメータまたはパラメータリストのパラメータの数の順、少なくとも異なるものとして存在します。

オーバーロードのルール

同じクラスの場合

  • 同じメソッド名
  • 方法の異なるパラメータ(パラメータまたはパラメータ・タイプの数)
  • 戻り値の型は、リロードには影響を与えません。
public class Solution {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a, b);
        System.out.println("ret = " + ret);
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(int x, int y) {
        return x + y;
    }
}

ここに画像を挿入説明
ときに、2つの同じ名前のメソッド、同じパラメータが、異なる戻り値過負荷を構成するものではありません

リカーシブ

「再帰的」と呼ばれる実行自体の間のメソッド呼び出し、
例えば:N階乗再帰

public class Solution {
    public static void main(String[] args) {
        int n = 3;
        int ret = factor(n);
        System.out.println("ret = " + ret);
    }
    public static int factor(int n) {
        if (n == 1) {
            return 1;
        }
        int ret = n * factor(n - 1);
        return ret;
    }
}

図の実行
ここに画像を挿入説明

公開された60元の記事 ウォン称賛23 ビュー3313

おすすめ

転載: blog.csdn.net/weixin_44945537/article/details/104044228