構造体(Class) を定義する

C:\DATA\Java2\01Dos>java Seiseki
name=青木  ten1=70  ten2=80  ten3=90
name=鈴木  ten1=75  ten2=85  ten3=95
name=田中  ten1=92  ten2=82  ten3=72
 -- Press any key to exit (Input "c" to continue) --

構造体(Class)を定義する Sample Program です。
構造体の配列を使うとき、実体は new で確保しなければなりません。

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

プログラムの作成

  1. メモ帳などでタイプして Seiseki.java の名前で保存して下さい。
    //★ 構造体を定義   前田 稔
    public class Seiseki
    {   public static void main(String args[])
        {   Mark[]      mark = new Mark[3];
    
            mark[0] = new Mark("青木", 70, 80, 90);
            mark[1] = new Mark("鈴木", 75, 85, 95);
            mark[2] = new Mark("田中", 92, 82, 72);
            for(int i=0; i<3; i++)  mark[i].Print();
        }
    }
    
    // 成績構造体
    class   Mark
    {   String  name;   //名前
        int     ten1;   //点数-1
        int     ten2;   //点数-2
        int     ten3;   //点数-3
    
        // Constructor
        public Mark(String str, int v1, int v2, int v3)
        {   name= str;
            ten1= v1;
            ten2= v2;
            ten3= v3;
        }
    
        // Print methed
        public void Print()
        {   System.out.println("name=" + name + "  ten1=" + ten1 +"  ten2=" + ten2 +"  ten3=" + ten3);
        }
    }
    
  2. ソースプログラムをコンパイルして class オブジェクトを実行して下さい。
    コンパイルの詳細は Java を動かす を参照して下さい。
  3. ページ先頭の画面が表示されたら完成です。

プログラムの説明

  1. Java にはC言語で言う所の構造体はありません。
    構造体と Class は基本的に同じなので構造体を使いたいときは Class を使います。
    成績構造体(Class)では、名前と3教科の点数を定義しています。
    Constructor で構造体に値を設定します。
    Print() メソッドで成績を印字します。
    // 成績構造体
    class   Mark
    {   String  name;   //名前
        int     ten1;   //点数-1
        int     ten2;   //点数-2
        int     ten3;   //点数-3
    
        // Constructor
        public Mark(String str, int v1, int v2, int v3)
        {   name= str;
            ten1= v1;
            ten2= v2;
            ten3= v3;
        }
    
        // Print methed
        public void Print()
        {   System.out.println("name=" + name + "  ten1=" + ten1 +"  ten2=" + ten2 +"  ten3=" + ten3);
        }
    }
    
  2. Mark[] mark = new Mark[3]; で3人分の領域を確保します。
    この状態をC言語で説明すると、Object のポインタ配列だけが定義された状態で実体はありません。
    構造体の実体は new で確保しなければなりません。
    C言語では構造体に初期値を設定することが出来るのですが、Java では new でヒープ領域を割り当てるので初期値の設定は出来ません。
    構造体の初期値は 前田稔の超初心者のプログラム入門 から 「超初心者のプログラム入門(C/C++/CLI)/構造体/構造体の基本−2」を参照して下さい。
    public class Seiseki
    {   public static void main(String args[])
        {   Mark[]      mark = new Mark[3];
    
            mark[0] = new Mark("青木", 70, 80, 90);
            mark[1] = new Mark("鈴木", 75, 85, 95);
            mark[2] = new Mark("田中", 92, 82, 72);
    

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