Java方法及び配列関連の原理解析


方法
設計方法の原則:方法の真意は機能ブロックであり、ある機能を実現するブロックの集合である。私たちが設計した方法は、一番いい方法の原子性を維持することです。つまり、一つの方法は一つの機能を完成するだけで、後期の拡張に有利です。
メソッドの再ロード
リロードとは、同じクラスの関数名ですが、パラメータが異なる関数です。
リロード規則:
  • 方法名は同じでなければなりません。
  • パラメータリストは異なる必要があります。
  • 方法では、戻り値の種類は同じでもいいし、同じでもいいです。
  • 戻りタイプだけでは方法の重み付けには不十分です。
  • 実現原理:
    メソッド名が同じであれば、コンパイラは呼び出し方法のパラメータ個数、パラメータタイプなどに従って一つ一つマッチングし、対応する方法を選択します。もしマッチングに失敗したら、コンパイラはエラーを報告します。
    コマンドライン
    
    public static void main(String[] args) {
        for (int i=0;i<args.length;i++){
          System.out.println("args["+i+"]:"+args[i]);
        }
      }//        main  
    cmdインターフェースの下で運行することができます!!!
    可変パラメータ
    JDK 1.5から、Javaは同じタイプの可変パラメータを転送する方法をサポートします。
    方法宣言では、パラメータの種類を指定した後に省略記号を追加します。
    一つの方法では可変パラメータしか指定できません。これは方法の最後のパラメータでなければなりません。任意の普通のパラメータは、その前に宣言しなければなりません。
    
    public static void main(String[] args) {
        //  
        printMax(34,3,3,2,56.5);
        printMax(new double[]{1,2,3});
      }
    
      public static void printMax(double... numbers){//    
        if (numbers.length==0){
          System.out.println("No argument passed");
          return;
        }
    
        double result=numbers[0];
    
        //  
        for (int i = 1; i < numbers.length; i++) {
          if(numbers[i]>result){
            result=numbers[i];
          }
        }
        System.out.println("The max value is "+result);
      }
    再帰する
    AメソッドはAメソッドを呼び出す!自分で自分を呼び出す!
    再帰的構造は2つの部分を含む。
    再帰ヘッダ:いつ自分の方法を呼び出しませんか?頭がないと死の循環に陥る。
    再帰体:いつ自分の方法を呼び出す必要がありますか?
    
    public static int f(int n){
        if(n==1){
          return 1;
        }else {
          return n*f(n-1);
        }
      }
    行列
    配列は同じタイプのデータの規則的な集合である。
    配列は同じタイプのいくつかのデータを記述しており、一定の順序で並べて組み合わせられている。
    ここで、各データは1つの配列要素と呼ばれ、各配列要素は1つの下付き文字でそれらにアクセスできます。
    配列の宣言
    int[]nums=new int[5];
    nums[0]=1nums[1]=2nums[2]=3nums[3]=4;nums[4]=5
    配列の3種類の初期化
    //1静的初期化
    int[]a={1,2,3,5,6,7,8}
    System.out.println(a[0]);
    //2ダイナミック初期化:3デフォルト初期化を含む
    int[]b=new int[10];
    b[0]=10
    b[1]=10
    System.out.println(b[0]);
    System.out.println(b[1]);
    System.out.println(b[2])//デフォルト初期化、出力結果は0です。
    配列の4つの基本的な特徴
  • は、その長さが決定される。配列が作成されると、サイズは変更できません。
  • は、要素が同じタイプである必要があり、混合タイプが出現してはいけない。
  • 配列の要素は、基本タイプおよび参照タイプを含む任意のデータタイプであってもよい。
  • 配列変数は参照型であり、配列はオブジェクトとしても見なされ、配列内の各要素はオブジェクトのメンバー変数に相当する。配列自体はオブジェクトであり、Javaのオブジェクトはスタックにありますので、配列は元のタイプまたは他のオブジェクトのタイプに関係なく、配列オブジェクト自体はスタックにあります。
  • 行列境界
    配列の適用
    
    //    
    	public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) {
          result[j]=arrays[i];
        }
        return result;
      }
    多次元配列
    int a[]=new int[2][5]//以上の二次元配列は、2行5列の配列として見られます。
    Aray類
    JDKグループの文書を確認してください!!
    一般的な機能:
    配列に値を与えます。fill
    配列の並べ替え:sort
    比較配列:equals比較配列の要素値が等しいかどうか
    検索配列要素:binarySearch方法は、並べ替えられた配列を二分割検索で操作することができます。
    泡の並べ替え
    
      public static int[] sort(int[] array){
    //       
        int temp=0;
        for (int i = 0; i < array.length-1; i++) {
          for (int j = 0; j < array.length-1-i; j++) {//i           ,          i,      
            if(array[j+1]<array[j]){
              temp=array[j];
              array[j]=array[j+1];
              array[j+1]=temp;
            }
          }
        }
        return array;
      }
    まばら行列
    疎配列の処理方法は、
    記録配列は全部で何列ありますか?いくつの違いがありますか?
    異なる値を持つ要素と行列と値を小さなサイズの配列に記録し、プログラムの規模を縮小します。
    
    //       
      public static void main(String[] args) {
        //    
        int[][] array1=new int[11][11];
        array1[1][2]=1;
        array1[2][3]=2;
    
        System.out.println("      :");
    
        for (int[] ints:array1) {
          for(int anint:ints){
            System.out.print(anint+"\t");
            //      
          }
          System.out.println();
        }
        System.out.println("================");
        //       
        //        
        int sum= 0;
        for (int i = 0; i < 11; i++) {
          for (int j = 0; j < 11; j++) {
            if(array1[i][j]!=0){
              sum++;
            }
          }
        }
        System.out.println("     :"+sum);
    
        //      
        int[][] array2=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        //      ,           
        int count=0;
        for (int i = 0; i < array1.length; i++) {
          for (int j = 0; j < array1[i].length; j++) {//          
            //      
            if(array1[i][j]!=0){
              count++;
              array2[count][0]=i;
              array2[count][1]=j;
              array2[count][2]=array1[i][j];
            }
          }
        }
        //      
        System.out.println("    ");
    
        for (int i = 0; i < array2.length; i++) {
          System.out.println(array2[i][0]+"\t"
              +array2[i][1]+"\t"
              +array2[i][2]+"\t");
        }
    
        System.out.println("================");
        System.out.println("  ");
        int[][] array3=new int[array2[0][0]][array2[0][1]];
    
        //   
        for (int i = 1; i < array2.length; i++) {
          //              
          array3[array2[i][0]][array2[i][1]]=array2[i][2];
        }
    
        //    
        System.out.println("      :");
    
        for (int[] ints:array3) {
          for(int anint:ints){
            System.out.print(anint+"\t");
            //      
          }
          System.out.println();
        }
      }
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。