Javaの研究ノート4:メソッド、配列、再帰

工程
1は、定義:カプセル化する関数を、便宜上、特定の機能ブロックを実現するために繰り返し呼び出されます。
2フォーマット:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
             方法体;
			return 返回值;
		}

(1)、修飾子:現在静的公開用いて
(2)、戻り値型:戻り値のデータ型を定義するための手段
(3)を、メソッド名である名前、それは我々がメソッドを呼び出す便宜のために存在する
(4) 、パラメータの型は:で定義されたメソッドを呼び出すときのパラメータのデータ型が渡された
変数、実際にプロの用語を持っている着信メソッドのパラメータを、受信時に仮パラメータと呼ばれ、:、パラメータ名(5)その機能は、実際のパラメータを受信する。
(6)手順:完了コード機能
(7)、リターン:戻る指定されたメソッド、および方法は終了値タイプ
(8)、戻り値:れる関数によって結果呼び出し元に戻って、バック返す
注:
①の方法ではないコールんない
フラットな関係ではなく、ネストされた定義に②方法である
間にコンマで区切られた規定された方法③
ない伝送方式で呼び出し④データタイプ
⑤方法は、明確な戻り値を持つ場合、値は戻りによって戻されなければならない

例えば:配列で定義された最大値を選択する方法

public class ForDemo {
    public static void main(String[] args) {
        int[] arr={1,2,4,5,36,9,6};
        System.out.println(show(arr));
    }
    public static int show(int[] arr){
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(max<arr[i]){
                max=arr[i];
            }
        }
        return (max);
    }
}

図3に示すように、オーバーロードの方法
と同じクラスでは、限り、彼らは関係なく、戻り値のパラメータ(異なるパラメータ、すなわち数、パラメータの異なるタイプ)の異なるリストであるように、同じ名前の複数のを可能にする方法があります。
例えば:

 public static void main(String[] args) {
        
    }
    public static int add(int a,int b){
        
        return 0;
    }

    public static int add(int a, float b) {

        return 0;
    }

    public static int add(int a,int b, float c) {

        return 0;
    }

第二のアレイ
配列同じデータタイプの複数の記憶素子の集合です。コンテナの同等。アレイは、基本データ型を格納することができ、参照データ型を格納することができます。
図1に示すように、一次元アレイ
フォーマット1:データ型[]配列名、
フォーマット2:データ型配列名[];
配列の初期化:アレイは、使用前に初期化されなければなりません。これは、アレイ内のメモリアレイ要素を割り当てることであり、各配列要素に割り当てられました。
初期化は、分類:静的初期化と動的初期化;
①、動的初期化:
フォーマット:データ型[]配列名=新しいデータタイプ[配列サイズ];
例:INT [] ARR =新しいINT [5]
②、動的初期化:
フォーマット:データ型[] =新しいアレイ名データ型[] {素子1、素子2、...};
例:INT [] ARR =新しいINT [] {12,52,21};
2、二次元アレイの
形式:①データ型[] []変数名=新しいデータ型[I]、[J];
②データ型[] []変数名=新しいデータ型[I] [];
③データ型[] []変数名= {{要素は...}、... {素子} {...}}要素、
問題がしばしば生じる:
:は、ArrayIndexOutOfBoundsException:配列インデックス境界例外
理由:インデックスへのアクセスがアレイの長さを超えます。
B:NullPointerExceptionが:ヌル・ポインタ例外
理由:アレイは、ヒープメモリへのポインタをしていません。そして、あなたはまた、配列名の要素にアクセスするために使用します。

第三に、再帰的な
方法での呼び出しは、再帰的なメソッド自体が呼び出され
ます:1は、スタックオーバーフロー、再帰的な輸出を持っているそうでなければ、死は死再帰再帰であるを引き起こす可能性があり
、数2再帰はあまりすべきではないそうでない場合は、スタックオーバーフローの危険性が存在します
例: ①、階乗5

 public static void main(String[] args) {
        long num=jieCheng(5);
        System.out.println(num);
    }
  private  static long jieCheng(int i) {
        if(i==1){
           return 1;
        }else{
            return i*jieCheng(--i);
        }

    }

②、ウサギの問題(フィボナッチ数)
出産後の最初の3ヶ月からウサギのペアでは、月はウサギの一組を出産した後にバニーは三月まで成長、毎月ウサギのペアを1つ生まれていますウサギが死んでいない、とウサギの数の第二の10ヶ月を求めた場合はどのくらいですか?

  分析:
            月份    对数
            1          1
            2          1
            3          2
            4          3
            5          5
            6          8
            7          13
            6          21
           ...          ...

結果から:列の第3の数から1123581321のフィボナッチ数、最初の2つの数の各々は、彼の合計の数に等しい
コード:

  public static void main(String[] args){
  int num= rabbitSum(20);
        System.out.println(num);
    }
    private static int rabbitSum(int i) {
        if(i==1||i==2){
           return 1;
        }else{
            return rabbitSum(i-1)+rabbitSum(i-2);
        }
    }
}
公開された24元の記事 ウォン称賛11 ビュー2064

おすすめ

転載: blog.csdn.net/weixin_43791069/article/details/84801587