レポート#4

(11/30)(Sun)   035717B   金城満久
<課題>
第一回Java試験問題を解答を解説し,その動作について考察せよ.併せて,講 義資料オブジェクト指向プログラムJava1の中のサンプルプログラムについて 考察せよ.
<実行プログラム>
[Mitsuhisa-KINJO:~/java] j03017% cat report4.java
class report4{
    public static void main(String argv[]){
        System.out.print("Q24:");
        toi24();
        System.out.print("Q25:");
        toi25();
        System.out.print("Q26:");
        toi26_1();
        System.out.print("Q26:");
        toi26_2();
        System.out.print("Q27:");
        toi27();
        System.out.print("Q28:");
        toi28();
        System.out.print("Q29:");
        toi29();
        System.out.print("Q30:");
        toi30();
    }
    public static void toi24(){
        int x,y;
        x = 100; x += 1; x--; y = 200; y = 200 + x;
        System.out.println(y++);
    }
    public static void toi25(){
        int a=0, x=0;
        a = 5; a += 3; x = ++a;
        System.out.println(x);
    }
    public static void toi26_1(){
        int a=9, b=3;
        a /= b;
        System.out.println(a %= b);
    }
    public static void toi26_2(){
        int i, j;
        for(i=0,j=0; i<3; i++) ++j;
        System.out.println(i * j);
    }
    public static void toi27(){
        int i=2;
        while(i-- >0) System.out.print(i);
        System.out.println();
    }
    public static void toi28(){
        int num=10000;
        for(int i=0; i < 4; i++) num >>=i;
        System.out.println(num);
    }
    public static void toi29(){
    int num=0;
    for(int i=1; i <=10; i++){if(++num % i ==0) num++;}
    System.out.println(++num);
    }
    public static void toi30(){
        int a = 9;
        if(a++ != 10 | a++ == 10) a++;
        System.out.println(a);
    }
}
<実行結果>
[Mitsuhisa-KINJO:~/java] j03017% javac report4.java
[Mitsuhisa-KINJO:~/java] j03017% java report4
Q24:300
Q25:9
Q26:0
Q26:9
Q27:10
Q28:156
Q29:12
Q30:12
<考察>
    第一回Java試験問題解答
  1. javac Sample.java 
    とします.
  2. Sample.classというバイトコードができます.
  3. Javaインタプリタと言います.
  4. Javaアプレットと言います.
  5. appletviewerコマンドを使います.
  6. Javaサーブレットと言います.
  7. public static void main(String arg[]){}
    と書きます.
  8. System.out.print("Hello");
    と書きます.
  9. gotoとconstの二つです.
  10. サイズは16ビット,保持できる値はUnicode文字です.
  11. byte型,short型,int型,long型です.
  12. クラスと配列です.
  13. 加算演算子を使います.
  14. if〜else文と,switch文です.
  15. for文,while文,do〜while文です.
  16. throw文(try〜catch文も.)
  17. new演算子と
  18. int[] a;とint a[];です.
  19. a.lengthです.
  20. java.lang.Stringクラスです.
  21. 0です.
  22. if(num%100==0)です.
  23. if(year%4==0&&year%100!=0||year%400==0)です.
  24. 300です.System.out.println(y++);とは,yを出力したあと,yに1をた します.
  25. 9です.aに5をだいにゅうして,a+3した値8をaに代入して,aに1をたし た値9をxに代入します.
  26. 0です.a/bの値3をaに代入したので,,a%bの値は0になります.
  27. 9です.ここでは,iが3になったらfor文をぬけますが,iが3のとき,j の値も3になるので,i*jは9になります.
  28. 10です.i=2なので,i>0よりiに-1をたした値1を出力します.i=1なの で,i>0よりiに-1をたした値0を出力します.このとき, System.out.print(i);としているので,改行しません.i=0なので,while文か らぬけて終了します.
  29. 156です.10000を2進数で表すと,10011100010000になります.これを, for文より,i=0,i=1,i=2,i=3計6ビット右にシフトすると,10011100になり ます.これを10進数になおすと,156になります.
  30. 12です.iが1のとき,if文より++numは1なので,割り切れるので,numに1 が足されます.これは,i=2,3,4,5,6,7,8,9,10のときも成り立つので,i=10 のときはnumも10なのでnumに1が足され,11になります.結果,++numは12に なります.
  31. 12です.if文で,a++が10か10でないときa++を行うのですが,a==9なので, a++は10になり,a++ == 10がなりたつのでa++してa=11になり,これはa++ != 10がなりたつのでa++してa==12になります.実際,このブール型論理和演 算子のきちんとした意味はまだわかりません.
講義資料プログラムの考察
class CircleC {                                 // クラス
    double pai = 3.14;                          // データ
    double circle(int r) {                      // メソッド
        return pai * r * r;
    }
}
class Demo {                                    // クラス
    public static void main(String args[]) {    // メソッド
        double area;;
        CircleC obj;                            // オブジェクト
        obj  = new CircleC();
        area = obj.circle(10);
        System.out.println("area = " + area);
    }
}
上のプログラムで,インスタンスフィールドは,
double pai = 3.14; , double area;
です.インスタンスメソッドは,
double circle(int r){}
です.クラスフィールド,クラスメソッドはありません.
四則演算の計算プログラムでは,インスタンスフィールドは,
int a,b,wa,sa,seki,sho;
です.インスタンスメソッドは,
int add() , int substract() , int multiply() , int divide()
です.
クラスフィールド,クラスメソッドとインスタンスフィールド,インスタンス メソッドとの違いは,static修飾子があるかないかで判別します.クラスフィー ルド,クラスメソッドなら,static修飾子を宣言します.
<反省・感想>
今回のJava問題は,簡単なほうな気がしましたが解答してみるとプログラ ムを実行したときの出力結果の問題が全然駄目だった感じだったので,今度 のテストではいい点とるようにしたいです.
<参考文献>
JAVAクイックリファレンス
すべての人のためのJavaプログラミング:立木秀樹/有賀妙子_著

<ホーム>