Java II 総まとめ:
--------------------------------------------------------------------

 1:クラスの構造とソースファイルの名前のルール
 2:コンパイルと実行の手順
 3:main()メソッドの役割と処理の開始

/* 課題1:次のプログラムは何という名前のソースファイルに保存しますか?
 * そのソースファイルをコンパイルするには、どうしますか?
 * コンパイルの結果、新しいファイルが生成されます。その名前は?
 * プログラムを実行するには、どうしますか?
 * プログラムを実行すると、どんな結果が出力されますすか?
 */
public class Check1 {

   public static void main( String[] args ) {
       System.out.println( "Hello, Wakkanai Hokusei" );
   }
}

 4:型の意味
 5:型の宣言と識別名(変数名)
 6:基本データ型の名称と意味
 7:演算と演算子
 8:値の代入
 9:四則演算

/* 課題2:次のプログラムはどんな結果を出力しますか? */
public class Check2 {

   public static void main( String[] args ) {
       int x;
       x = 1;
       System.out.println( x );
       x = x + 1;
       System.out.println( x );
       x = x * x;
       System.out.println( x );
       x = x - x/x;
       System.out.println( x );
   }
}

10:剰余演算(余りの計算)
11:文字と文字列のデータ表現
12:文字列の連結

/* 課題3:次のプログラムはどんな結果を出力しますか? */
public class Check3 {

   public static void main( String[] args ) {
       int n=20;
       int m=7;
       System.out.println( "n / m = " + (n/m) );
       System.out.println( "n % m = " + (n%m) );
       float x=20.0f;
       float y=7.0f;
       System.out.println( "x / y = " + (x/y) );
   }
}


13:代入演算
14:インクリメント、デクリメント


/* 課題4:次のプログラムはどんな結果を出力しますか? */
public class Check4 {

   public static void main( String[] args ) {
       int x = 2;
       x += 1;
       x *= 2;
       x++;
       x %= 3;
       --x;
       String str = "点";
       System.out.println( x + str );
   }
}


15:論理演算
16:その他の演算


/* 課題5:次のプログラムはどんな結果を出力しますか? */
public class Check5 {

   public static void main( String[] args ) {
       int x=100;
       int y=50;
       boolean b;
       b = ( x < y );
       System.out.println( b );
       b = !b;
       System.out.println( b );
       b = ( x > y ) || ( x <= y );
       System.out.println( b );
       b = ( x > y ) && ( x <= y );
       System.out.println( b );
   }
}


17:配列
18:配列の宣言
19:配列の初期化


/* 課題6:次のプログラムはどんな結果を出力しますか? */
public class Check6 {

   public static void main( String[] args ) {
       int[] a = { 1, 2, 3 };
       System.out.println( a[0] );
       System.out.println( a[ a.length - 1 ] );

       a = new int[2];
       a[0] = 100;
       a[1] = 200;
       System.out.println( a[0] );
       System.out.println( a[ a.length - 1 ] );
   }
}


20:多次元の配列


/* 課題7:次のプログラムはどんな結果を出力しますか? */
public class Check7 {

   public static void main( String[] args ) {
       int[][] a = {
                      { 1, 2, 3 },
                      { 10, 20, 30 },
                   };
       System.out.println( a[0][1] );
       System.out.println( a[ a.length - 1 ][0] );
   }
}


21:条件分岐の構造(if-else)


/* 課題8:次のプログラムはどんな結果を出力しますか? */
public class Check8 {

   public static void main( String[] args ) {
       int x, y;
       x = 10;
       y = 111 - x * x;
       if( x > y ) {
          System.out.println( "x is bigger than y" );
       }
       else if( x == y ) {
          System.out.println( "x and y are equal" );
       }
       else {
          System.out.println( "x is smaller than y" );
       }
   }
}


22:switch-case とラベル、break文


/* 課題9:次のプログラムはどんな結果を出力しますか? */
public class Check9 {

   public static void main( String[] args ) {
       int x = 100%7;
       switch( x ) {
           case 0:
               System.out.println( "余り0" );
               break;
           case 1:
               System.out.println( "余り1" );
               break;
           case 2:
               System.out.println( "余り2" );
               break;
           default:
               System.out.println( "それ以外" );
       }
   }
}


23:繰り返しの構造(while)


/* 課題10:次のプログラムはどんな結果を出力しますか? */
public class Check10 {

   public static void main( String[] args ) {
       int x = 3;
       while( x < 100 ) {
           System.out.println( x );
           x *= x;
       }
   }
}


24:do-while


/* 課題11:次のプログラムはどんな結果を出力しますか? */
public class Check11 {

   public static void main( String[] args ) {
       int x = 10;
       do {
           x *= x;
           System.out.println( x );
       } while( x < 100 ); 
   }
}


25:for


/* 課題12:次のプログラムはどんな結果を出力しますか? */
public class Check12 {

   public static void main( String[] args ) {
       int[] a = { 5, 9, 8, 4, 3 };
       for( int i=0; i<a.length; i++ ) {
           System.out.println( a[i]%2 );
       }
   }
}


26:条件分岐と繰り返しの階層構造


/* 課題13:次のプログラムはどんな結果を出力しますか? */
public class Check13 {

   public static void main( String[] args ) {
       int[] a = { 5, 9, 8, 4, 3 };
       for( int i=0; i<a.length; i++ ) {
           if( a[i]%2 != 0 ) {
              System.out.println( a[i] );
           }
       }
   }
}


27:メソッドの呼び出しと処理のジャンプ


/* 課題14:次のプログラムはどんな結果を出力しますか? */
public class Check14 {

   public static void method1() {

       System.out.println( "I am method1" );
   }

   public static void method2() {

       method1();
       System.out.println( "I am method2" );
       method1();
   }

   public static void main( String[] args ) {

       method2();
   }
}


28:メソッドの引数
29:メソッドの返り値


/* 課題15:次のプログラムはどんな結果を出力しますか? */
public class Check15 {

   public static String method( int x ) {

       String str = "";
       for( int i=0; i<x; i++ ) {
           str += i;
       }
       return str;
   }

   public static void main( String[] args ) {

       String result;
       int m=10;
       result = method( m );
       System.out.println( result );
   }
}


30:基本のアルゴリズム
31:合計と平均値


/* 課題16:次のプログラムはどんな結果を出力しますか? */
public class Check16 {

   public static void main( String[] args ) {
       int[] a = { 5, 9, 8, 4, 3 };
       int sum = 0;
       for( int i=0; i<a.length; i++ ) {
            sum += a[i];
       }
       System.out.println( sum/a.length );
   }
}


32:最大値と最小値


/* 課題17:次のプログラムはどんな結果を出力しますか? */
public class Check17 {

   public static void main( String[] args ) {
       int[] a = { 5, 9, 8, 4, 3 };
       int max = a[0];
       for( int i=1; i<a.length; i++ ) {
           if( a[i] > max ) {
              max = a[i];
              System.out.println( max );
           }
       }
   }
}


33:ソート


/* 課題18:次のプログラムはどんな結果を出力しますか? */
public class Check18 {

   public static void main( String[] args ) {
       int[] a = { 5, 9, 8, 4, 3 };
       for( int i=0; i<a.length; i++ ) {
           maxN( a, i );
       }
   }

   public static void maxN( int[] a, int n ) {
       int max = a[n];
       int maxIndex = n;
       for( int i=n+1; i<a.length; i++ ) {
           if( a[i] > max ) {
              max = a[i];
              maxIndex = i;
           }
       }
       a[maxIndex] = a[n];
       a[n] = max;
       System.out.println( a[n] );
   }
}


34:クラスの構造とメンバ
35:フィールド
36:メソッド
37:コンストラクタ


/* 課題19:次のプログラムは何という名前のソースファイルに保存しますか?
 * そのソースファイルをコンパイルするには、どうしますか?
 * コンパイルの結果、新しいファイルが生成されます。その名前は?
 * このプログラムは単独では実行できません。なぜですか?
 */
public class Person {

    public int id;

    public String name;

    public Person( int i, String s ) {
        id = i;
        name = s;
    }

    public String toString() {

        return id + ":" + name;
    }

    public boolean equals( Person p ) {

        if( id == p.id  &&  name.equals( p.name ) ) {
           return true;
        }
        else {
           return false;
        }
    }
}


38:基本データ型と参照データ型
39:クラスとインスタンス
40:コンストラクタとインスタンスの生成


/* 課題20:次のプログラムはどんな結果を出力しますか? */
public class Check20 {

   public static void main( String[] args ) {

       Person p = new Person( 101, "Tatsuo Ueda" );
       System.out.println( p.toString() );
   }
}


41:参照データ型のデータとメソッドの引数、返り値
42:参照データ型のデータの比較( == と equals() )


/* 課題21:次のプログラムはどんな結果を出力しますか? */
public class Check21 {

   public static void main( String[] args ) {

       Person p1 = new Person( 101, "Tatsuo Ueda" );
       Person p2 = new Person( 102, "Tatsuo Ueda" );
       Person p3 = new Person( 101, new String("Tatsuo Ueda") );
       System.out.println( p1.equals( p2 ) );
       System.out.println( p1.equals( p3 ) );
   }
}


43:static なメンバの意味


/* 課題22:次のプログラムはどんな結果を出力しますか? */
public class Check22 {

   public static void main( String[] args ) {

       int i = Integer.parseInt( "100" + "0" );
       System.out.println( i );
   }
}


44:J2SDKのクラスライブラリ、パッケージ
45:Stringクラスと文字列の扱い
46:StringBufferの使用方法
47:Systemクラスのメソッド
48:Systemクラスの標準入出力のフィールド
49:Mathクラスのフィールドとメソッドの利用
50:Wrapper(ラッパ)クラスのフィールドとメソッドの利用