Report#3
Report#3:Javaの文法解説I{〜11/14(Mon)}
講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・考察せよ。

注・以下のプログラムの「¥」はバックスラッシュとする
[講義資料プログラム]
01 public/*これもコメントです*/ class Test01 { // Test01.java
02 public static void main(String args[]) { //mainの記述
03 System.out.println("コメント");
04 cmnt();
05 System.out.println("¥n¥n文字列出力");
06 smp1();
07 System.out.println("¥n¥n変数宣言と数値出力"); 08 smp2();
09 System.out.println("¥n¥n繰り返し処理");
10 smp3();
11 System.out.println("¥n¥n条件処理");
12 smp4();
13 }

/*コメント*/
14 public static void cmnt() { //mainの記述
15 System.out.println("My first Java."); //文字列出力する
16 }

/*文字列出力*/
17public static void smp1() {
18 System.out.print("AAAAA");
19 System.out.print("BBBBB¥nCCCCC¥n");
20 System.out.println("DDDDD");
19 System.out.println("EEEEE¥nFFFFF¥n¥nGGGGG");
20 }

/*変数変数宣言と数値出力*/
21 public static void smp2() {
22 int a, b, sum;

23 a = 100;
24 b = 200;
25 sum = a + b;
26 System.out.print("a="); // 文字列だけ出力
27 System.out.println(a); // 数値だけ出力
28 System.out.println("b=" + b); // 文字列と数値を表示
29 System.out.println("a+b=" + sum); // 結果を表示
30 System.out.println("a+b=" + (a+b)); // 直接計算させる
}

/*繰り返し処理*/
31 public static void smp3() {
32 int i, sum;

33 for (i=1; i<=5; i++)
34 System.out.println("i=" + i);

35 sum = 0;
36 for (i=1; i<=5; i++) {
37 sum = sum + i;
38 System.out.println("sum=" + sum);,
39 }
40 }

/*条件処理*/ 41 public static void smp4() {
42 int i;

43 for (i=1; i<=5; i++) {
44 System.out.print("i=" + i);
45 if (i < 3)
46 System.out.println(" 3未満です");
47 else
48 System.out.println(" 3以上です");
49 }
50 }

51 }


■ 実行結果
コメント
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以上です



考察
    *プログラムにコメント(〜)を入れるときは
     //〜(〜の行が変わるまで)や/* 〜 */(〜の部分)等がある
01-13 クラスを定義しメソッドを呼び出す
    *メソッド(スレッド)はすメソッド();で呼び出す
14  public=他のクラスから参照可 static=静的変数の宣言 void=戻り値を返さない
15  My first Javaを出力する  
17-20 メソッドsmp1に対しprint("")を実行する
    *¥nは改行を表す(他にも¥を用いたコードがある)
21-30 メソッドsmp2に対しprint("")を実行する
22で a b sum を定義し、23変数 a b に値を代入。24でsumにa+bの演算結果を代入させる
25-26において("a=")は文字として、(a)は変数として出力させる途中に改行が無いためa=100と出力される
27-28では一度に文字列と変数を出力している
29はa+bを用いず(a+b)と記述することで変数 a b を演算し、結果を出力させている
31-40 メソッドsmp3に対しprint("")を実行する
32は22と同様である
33のforはループステートメントであり、for(スタート時の値, 終了条件, 実行内容)となっている
34で結果を出力させている
35は変数sum=0を宣言し、36でforループを実行。37は繰り返す式
41-51 メソッドsmp4に対しprint("")を実行する
43-44 for文を構成
45のifステートメントは選択ステートメントともよばれ、if (条件)で真偽の判断をします<br> 46-48は真であるときと、elseによる偽であるときの文字列を結果別に表示します



[プログラムTest02.java]<>br> 01 public class Test02 { // Test02.java
02 public static void main(String args[]) {
03 char ch;
04 boolean bdt;
05 int idt;
06 long ldt;
07 float fdt;
08 double ddt;
09 String ss;
10 final int CNST1 = 1234; // final定数

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

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

17 idt = 1234567890;
18 System.out.println("idt = " + idt);

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

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

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

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

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

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

31 ch = '¥n'; // エスケープ文字
32 System.out.println("改行文字コード = " + (int)ch);

33 ss = "AAAA¥tBBBB"; // 文字列定数(エスケープ文字を含む)
34 System.out.println("ss = " + ss);

35 System.out.println("CNST1 = " + CNST1);
36 }
37 }

■ 実行結果
文字=A code=65 <= 半角文字
文字=亜 code=20124 <= 全角文字
bdt = true <= 論理定数
idt = 1234567890 <= int型
ldt = 1234567890123456789 <= Lを付与したlong値定数
fdt = 123.456 <= Fを付与したfloat値定数
ddt = 123.456789012345 <= double型
8進22 = 18 <= 8進数の22
16進22 = 34 <= 16進数の22
指数 = 56700.0 <= 5.67e4
改行文字コード = 10 <= エスケープ文字¥n
ss = AAAA BBBB <= ¥t(タブ)を含む文字列
CNST1 = 1234 <= final定数


考察
01-10では色々なデータ型を宣言している
10のfinalは定数として使える変数である
11-37までの0x20等の値はリテラルといい、整数(int型)や文字(char型)、真偽(boolean型)などがある



[プログラムTest06.java]
01 public class Test06 { // Test06.java 02 public static void main(String args[]) { 03 System.out.println("算術演算子"); 04 comp1(); 05 System.out.println("¥n¥n関係演算子"); 06 comp2(); 07 System.out.println("¥n¥n論理演算子"); 08 comp3(); 09 System.out.println("¥n¥nインクリメント/デクリメント演算子"); 10 comp4(); 11 } 12 public static void comp1() { 13 int a, b, c; 14 double f, g, h; 15 a = 100; System.out.println("a = " + a); 16 b = 30; System.out.println("b = " + b); 17 c = a + b; System.out.println("a+b = " + c); // 加算
18 c = a - b; System.out.println("a-b = " + c); // 減算
19 c = a * b; System.out.println("a*b = " + c); // 乗算
20 c = a / b; System.out.println("a/b = " + c); // 整数除算
21 c = a % b; System.out.println("a%b = " + c); // 整数剰余

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

26 public static void comp2() {
27 int a;
28 for (a=1; a<=5; a++) {
29 System.out.println("--------" + a);
30 if (a < 2) System.out.println("2未満");
31 if (a >= 4) System.out.println("4以上");
32 if (a == 3) System.out.println("3である");
33 if (a != 3) System.out.println("3ではない");
34 }
35 }

36 public static void comp3() {
37 int a;

38 for (a=1; a<=5; a++) {
39 System.out.println("--------" + a);
40 if (a>=2 && a<=4)
41 System.out.println("2以上かつ4以下");
42 if (a<2 || a>4)
43 System.out.println("2未満または4より大");
44 if (!(a==1 || a==3))
45 System.out.println("1または3、ではない");
46 }
47 }

48 public static void comp4() {
49 int dt[] = {100, 200, 300}; // 配列を確保
50 int n;

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

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

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

■ 実行結果
算術演算子
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

考察
01-11Test01.javaと同様のプログラム
12-25では変数を宣言し算術演算子を用い演算するする
演算子は ++ -- * % + - += -= /=等がある
26-35関係演算子が使われている
関係演算子→== != < > <= >=などがある
36-50論理演算子が使われている。 論理演算子→& \ ! ^ && \\ == !=などがある
51-69インクリメント演算子やデクリメント演算子が使われている
++(インクリメント演算子) 〜+1と同様
--(デクリメント演算子) 〜-1と同様



感想
正直考察・完成度、どの面から見てもダメな内容だと思う。
次回はもっと努力しなければならない。