共有領域を使う

C:\DATA\Java2\Class>java InnerClass
Data_1=24   Data_2=32   gcm=8
Data_1=72   Data_2=54   gcm=18
 -- Press any key to exit (Input "c" to continue) --
inner class を使って main とデータ領域を共有します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして InnerClass.java の名前で保存して下さい。
    //★ Inner Class で領域を共有する  前田 稔
    public class InnerClass
    {   static int  Data_1,Data_2;
    
        public static void main(String args[])
        {
            GCM  App= new GCM();
            Data_1= 24;
            Data_2= 32;
            App.putgcm();
            Data_1= 72;
            Data_2= 54;
            App.putgcm();
        }
    
        // GCM Class
        public static class GCM
        {
            void putgcm()
            {   int w,gcm;
                w= Data_1;
                gcm= Data_2;
                while(w!=gcm)
                {   if (w>gcm)  w-= gcm;
                    else        gcm-= w;
                }
                System.out.println("Data_1=" + Data_1 + "   Data_2=" + Data_2 + "   gcm=" + gcm);
            }
        }
    }
    
  2. InnerClass.java をコンパイルして class オブジェクトを実行して下さい。
    ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. 本来 Object Class はメインとは独立した形で作成するのが基本ですが、場合よっては共有領域を使った方が便利な場合があります。
    今回はメインメソッドと GCM class から共通に参照できるデータ領域を使う方法を説明します。
    Data_1, Data_2; が共通領域で、メインメソッドと GCM Class から参照されます。
    main() が static なので、領域も static で宣言して下さい。
    public class InnerClass
    {   static int  Data_1,Data_2;
        
  2. new GCM() で GCM クラスをインスタンス化(生成)します。
    Data_1, Data_2 に 24 と 32 を格納して App.putgcm() で GCM を印字します。
    次に Data_1, Data_2 に 72 と 54 を格納して App.putgcm() で GCM を印字します。
        public static void main(String args[])
        {
            GCM  App= new GCM();
            Data_1= 24;
            Data_2= 32;
            App.putgcm();
            Data_1= 72;
            Data_2= 54;
            App.putgcm();
        }
        
  3. Class GCM は class InnerClass に含まれる形で定義して下さい。
    main() から直接参照するので class GCM も static で宣言して下さい。
    Constructor は必要無いので省略しました。
        // GCM Class
        public static class GCM
        {
            void putgcm()
            {   int w,gcm;
                w= Data_1;
                gcm= Data_2;
                while(w!=gcm)
                {   if (w>gcm)  w-= gcm;
                    else        gcm-= w;
                }
                System.out.println("Data_1=" + Data_1 + "   Data_2=" + Data_2 + "   gcm=" + gcm);
            }
        }
    }
        

【NOTE】

static で宣言された領域は、プログラムの実行が開始された直後からメモリに割り当てられています。
main() メソッドはプログラムの最初に呼ばれるメソッドなので、必ず static で宣言しなければなりません。
また static で宣言されたメソッドからは static 領域しか参照できません。
static で無い領域や Class は new で生成してから参照して下さい。

超初心者のプログラム入門(Java2)