Report#3

*課題:講義資料を参考にJavaの基礎的な文法について、教科書と対     応させながら解説・考察せよ。


a.ソースプログラム

public /*これもコメントです*/ class Test01 {   // Test01.java
    public static void main(String args[]) {   // mainの記述
        System.out.println("コメント");
        cmnt();                                // cmntスレッドの呼び出し
        System.out.println("\n\n文字列出力");
        smp1();
        System.out.println("\n\n変数宣言と数値出力");
        smp2();
        System.out.println("\n\n繰り返し処理");
        smp3();
        System.out.println("\n\n条件処理");
        smp4();
    }

    public static void cmnt() {                // mainの記述
        System.out.println("My first Java.");  // 文字列出力する
    }

    public static void smp1() {
        System.out.print("AAAAA");
        System.out.print("BBBBB\nCCCCC\n");
        System.out.println("DDDDD");
        System.out.println("EEEEE\nFFFFF\n\nGGGGG");
    }

    public static void smp2() {
        int a, b, sum;

        a = 100;
        b = 200;
        sum = a + b;
        System.out.print("a=");              // 文字列だけ出力
        System.out.println(a);               // 数値だけ出力
        System.out.println("b=" + b);        // 文字列と数値を出力
        System.out.println("a+b=" + sum);    // 結果を出力
        System.out.println("a+b=" + (a+b));  // 直接計算させる
    }

    public static void smp3() {
        int i, sum;

        for (i=1; i<=5; i++)
            System.out.println("i=" + i);
        sum = 0;
        for (i=1; i<=5; i++) {
            sum = sum + i;
            System.out.println("sum=" + sum);
        }
    }

    public static void smp4() {
        int i;

        for (i=1; i<=5; i++) {
            System.out.print("i=" + i);
            if (i < 3)
                System.out.println(" 3未満です");
            else
                System.out.println(" 3以上です");
        }
    }

}
実行結果

コメント My first Java. 文字列出力 AAAAABBBBB CCCCC DDDDD EEEEE FFFFF GGGGG 変数宣言と数値出力 a=100 b=200 a+b=300 a+b=300 繰り返し処理 i=1 i=2 i=3 i=4 i=5 sum=1 sum=3 sum=6 sum=10 sum=15 条件処理 i=1 3未満です i=2 3未満です i=3 3以上です i=4 3以上です i=5 3以上です

◎考察(ソースaについて)

1.cmnt()について


  • コメントとは、自分自身のためにソースコード内に書き込むメモのことです。コンパイラはすべてのコメント
    を無視します。コメントは、後からソースコードの機能や使用方法などの意味と目的を説明しておくために使
    用します。
     Javaのコメントには3種類があります。
    ・単一行コメント:"//コメント"
    ・複数行コメント:"/*コメント*/"
    ・ドキュメンテーションコメント:"/**コメント*/"(ドキュメンテーションコメントはJavadoc
       というツールを用いてプログラムのマニュアルを自動的に作成することができる)
    Javaでは、キーワードやクラス、メソッド、変数名の中を除いて、任意の場所にコメントを記述する
     ことができます。


2.smp1()について


  • System.out.print(""):このメソッドは" "内の文字列を出力ことです。
    System.out.println(""):このメソッドは" "内の文字列を出力した後、自動的に改行することです。
  • Java言語には特殊な文字も定義されています。これはキーボードから直接入力できない文字、印字不可能な
    文字、一部の文字セットにしか存在しない文字、特別な目的で使われる文字等いろいろです。これらの文字は
    先頭に"¥"を付けて表し、バックスラッシュコード(エスケープシーケンス)と呼ばれます。

  • コード 意味
    \b バックスペース
    \n 改行
    \r キャリッジリターン
    \f フォームフィード
    \t 水平タブ
    \" 二重引用符
    \' 一重引用符
    \0 null文字
    \\ バックスラッシュ
    \N 8進定数(N=0〜7)
    \NN 8進定数(N=0〜7)
    \MNN 8進定数(M=0〜3、N=0〜7)
    \uxxxx Unicode文字(xxxxは4桁の16進定数)


3.smp2()について


  • Javaには、二つの文字列、または、文字列と変数を連結する演算子が用意されています。これは連結演算子
    と呼ばれ、「+」記号で表されます。引用符で囲んだ文字列を使用できる場所であれば、どこでも使用できま
    す。
  • System.out.print("a=");これは"a="という文字列を出力して、改行しません。
    System.out.println(a);これは変数aの値を出力した後、改行します。
    System.out.println("b="+b);とSystem.out.println("a+b="+sum);これは「+」という連結演算
    子で、文字列と変数を連結した後、出力します。
    System.out.println("a+b="+(a+b));これは(a+b)が演算された値を出力します。


4.smp3()について


  • for文で、int型のiは1から1を加えて、i=5まで、これが終了した後、int型のsumは0から、毎回iを加
    えた後の結果はi=1から5までくわえる。

5.smp4()について


  • if文は、このような形式です。
    if(条件)
    文;
    else
    文;
    条件が真(0以外)の場合、1番目の文が実行されます。偽(0)の場合は、2番目の文が実行されます。


b.ソースプログラム

public class Test02 {                  // Test02.java
    public static void main(String args[]) {
        char    ch;
        boolean bdt;
        int     idt;
        long    ldt;
        float   fdt;
        double  ddt;
        String  ss;
        final int CNST1 = 1234;      // final定数

        ch = 'A';                    // 半角文字
        System.out.println("文字=" + ch + " code=" + (int)ch);
        ch = '亜';                   // 全角文字
        System.out.println("文字=" + ch + " code=" + (int)ch);


        bdt = true;
        System.out.println("bdt = " + bdt);

        idt = 1234567890;
        System.out.println("idt = " + idt);
        
        ldt = 1234567890123456789L;  // Lはlong値を示す
        System.out.println("ldt = " + ldt);

        fdt = 123.456F;              // Fはfloat値を示す
        System.out.println("fdt = " + fdt);

        ddt = 123.456789012345;
        System.out.println("ddt = " + ddt);

        idt  = 022;                  //  8進数の22
        System.out.println("8進22 = " + idt);

        idt = 0x22;                  // 16進数の22
        System.out.println("16進22 = " + idt);

        ddt  = 5.67e4;               // 指数表現の56700
        System.out.println("指数 = " + ddt);

        ch = '\n';                   // エスケープ文字
        System.out.println("改行文字コード = " + (int)ch);
    
        ss = "AAAA\tBBBB";           // 文字列定数(エスケープ文字を含む)
        System.out.println("ss = " + ss);

        System.out.println("CNST1 = " + CNST1);
    }
}
実行結果

文字=A code=65 文字=亜 code=20124 bdt = true idt = 1234567890 ldt = 1234567890123456789 fdt = 123.456 ddt = 123.456789012345 8進22 = 18 16進22 = 34 指数 = 56700.0 改行文字コード = 10 ss = AAAA BBBB CNST1 = 1234

◎考察(ソースbについて)

  • Javaの8つの基本データ型
    説明
    char 16ビットUnichodeキャラクタデータ
    boolean 真偽値
    byte 8ビット符号付き整数
    short 16ビット符号付き整数
    int 32ビット符号付き整数
    long 64ビット符号付き整数
    float 32ビット符号付き浮動小数点
    double 64ビット符号付き浮動小数点
    byte型、short型、int型、long型の変数には、符号付き整数値を格納することができます。正か負かを表
    す符号に1ビットを利用するので、数値を表現できる範囲は、byte型では(−2の7乗〜2の7乗−1)、
    short型では(−2の15乗〜2の15乗−1)、int型では(−2の31乗〜2の31乗−1)、long型では
    (−2の63乗〜2の63乗−1)の範囲です。

  • 022は8進数です。10進数になることは18です。0x22は16進数です。10進数になることは34です。

  • 5.67e4 = 5.67*10^4 (e1=10)

  • ldtの出力する結果はLを付与したlong値定数、fdtの出力する結果はF付与したfloat値定数。


c.ソースプログラム

public class Test06 {                 // Test06.java
    public static void main(String args[]) {
        System.out.println("算術演算子");
        comp1();
        System.out.println("\n\n関係演算子");
        comp2();
        System.out.println("\n\n論理演算子");
        comp3();
        System.out.println("\n\nインクリメント/デクリメント演算子");
        comp4();
    }

    public static void comp1() {
        int a, b, c;
        double f, g, h;

        a = 100;   System.out.println("a   = " + a);
        b = 30;    System.out.println("b   = " + b);
        c = a + b; System.out.println("a+b = " + c);   // 加算
        c = a - b; System.out.println("a-b = " + c);   // 減算
        c = a * b; System.out.println("a*b = " + c);   // 乗算
        c = a / b; System.out.println("a/b = " + c);   // 整数除算
        c = a % b; System.out.println("a%b = " + c);   // 整数剰余

        f = 90.0;  System.out.println("f   = " + f);
        g = 40.0;  System.out.println("g   = " + g);
        h = f / g; System.out.println("f/g = " + f/g); // 浮動小数点数除算
    }

    public static void comp2() {
        int a;
        for (a=1; a<=5; a++) {
            System.out.println("--------" + a);
            if (a < 2)  System.out.println("2未満");
            if (a >= 4) System.out.println("4以上");
            if (a == 3) System.out.println("3である");
            if (a != 3) System.out.println("3ではない");
        }
    }

    public static void comp3() {
        int a;

        for (a=1; a<=5; a++) {
            System.out.println("--------" + a);
            if (a>=2 && a<=4)
                System.out.println("2以上かつ4以下");
            if (a<2 || a>4)
                System.out.println("2未満または4より大");
            if (!(a==1 || a==3))
                System.out.println("1または3、ではない");
        }
    }
  
    public static void comp4() {
        int dt[] = {100, 200, 300};    // 配列を確保
        int n;

        // ++演算子を使わないときの記述
        n = 0;
        System.out.println(dt[n]);     // dt[0]を表示
        n = n +1;
        System.out.println(dt[n]);     // dt[1]を表示
        n = n +1;
        System.out.println(dt[n]);     // dt[2]を表示

        // ++演算子を使ったときの記述
        n = 0;
        System.out.println(dt[n++]);   // dt[0]を表示
        System.out.println(dt[n++]);   // dt[1]を表示
        System.out.println(dt[n++]);   // dt[2]を表示

        // --演算子を使う
        n = 5;
        while (--n >= 0) {             // n回繰り返す
            System.out.println("n=" + n);
        }
    }

}
実行結果

算術演算子 a = 100 b = 30 a+b = 130 a-b = 70 a*b = 3000 a/b = 3 a%b = 10 f = 90.0 g = 40.0 f/g = 2.25 関係演算子 --------1 2未満 3ではない --------2 3ではない --------3 3である --------4 4以上 3ではない --------5 4以上 3ではない 論理演算子 --------1 2未満または4より大 --------2 2以上かつ4以下 1または3、ではない --------3 2以上かつ4以下 --------4 2以上かつ4以下 1または3、ではない --------5 2未満または4より大 1または3、ではない インクリメント/デクリメント演算子 100 200 300 100 200 300 n=4 n=3 n=2 n=1 n=0

◎考察(ソースcについて)

  • 算術演算子
    演算子 説明
    + 加算
    - 減算(単項マイナス)
    * 乗算
    / 除算
    % 剰余
    += 加算代入
    -= 減算代入
    *= 乗算代入
    /= 除算代入
    %= 剰余代入
    ++ インクリメント
    -- デクリメント
    インクリメント演算子の意味:例えば i++ = i+1
    デクリメント演算子の意味は:例えば i-- = i-1

  • 関係演算子
    演算子 意味
    == 等しい
    != 等しくない
    > より大きい
    < より小さい
    >= より大きいか等しい
    <= より小さいか等しい

  • 論理演算子
    演算子動作説明
    &論理積AND。2つの項が真の時だけ結果が真になる。
    |論理和OR。2つの項が偽の時だけ結果が偽になる。
    ^排他的論理和Exclusive OR。2つの項が異なる時にだけ結果が真になる。
    !否定NOT。項の真偽が逆になる。
    &&論理積(ショートカット)
    ||論理和(ショートカット)
    ==等しい
    !=等しくない

    "&&"、"||"の二つの演算子の働きは"&"、"|"と少し同じくないです。"&"と"|"は必ず両方のオペランドが
    評価されます。しかし、"&&"と"||"は最初に左のオペランドが評価され、右のオペランドは必要な場合だけ
    評価されます。

  • 論理演算子の優先順位
    !
    >  >=  <  <=
    ==   !=
    &
    ^
    |
    &&
    ||
    上が高く下が低い


*感想



 課題について考察のおかげで、Javaとホームページの知識をたくさんわかりました。前期で、勉強したC言
語の一部分の知識ももう一度復習しました。ホームページでレポートを発表することもだんだん慣れます。
以前、情報について知識はぜんぜん知らないから、基礎はよくないと思います。したがって、一生懸命頑
張ります。