講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・考察せよ。
1.解答
Javanの基礎的な文法について考察するために、次のプログラムを作成した。
(1)sample1.java
ソースコード |
/*
*
*コメント
*
*/
public class sample1 {
public static void /*これもコメント*/ main(String[] args) {
System.out.println("算術演算子"); //これもコメント
int a, b, c; //a, b, cをそれぞれ初期化。
a = 10; //a に 10を代入。
System.out.println(a); //aの値を出力する。
System.out.println("a = " + a); //" "で囲んだ文字列を出力し、そのあとaの値を出力する。
b = 30; //b に 30を代入。
System.out.println(b); //bの値を出力する。
System.out.println("b = " + b); //" "で囲んだ文字列を出力し、そのあとbの値を出力する。
c = a + b; //c に a + bを代入。+ は加算演算子。
System.out.println(c); //cの値を出力する。
System.out.println("a+b = " + c); //" "で囲んだ文字列を出力し、そのあとcの値を出力する。
System.out.println(a+b); //a+bの計算結果を出力する。
c = a - b; //c に a - bを代入。- は減算演算子。
System.out.println(c); //cの値を出力する。
System.out.println("a-b = " + c); //" "で囲んだ文字列を出力し、そのあとcの値を出力する。
System.out.println(a-b); //a-bの計算結果を出力する。
c = a * b; //c に a * bを代入。* は乗算演算子。
System.out.println(c); //cの値を出力する。
System.out.println("a*b = " + c); //" "で囲んだ文字列を出力し、そのあとcの値を出力する。
System.out.println(a*b); //a*bの計算結果を出力する。
c = a / b; //c に a / bを代入。/ は除算演算子。
System.out.println(c); //cの値を出力する。
System.out.println("a/b = " + c); //" "で囲んだ文字列を出力し、そのあとcの値を出力する。
System.out.println(a/b); //a/bの計算結果を出力する。
c = a % b; //c に a % bを代入。%は剰余演算子。
System.out.println(c); //cの値を出力する。
System.out.println("a%b = " + c); //" "で囲んだ文字列を出力し、そのあとcの値を出力する。
System.out.println(a%b); //a%bの計算結果を出力する。
}
}
|
実行結果 |
算術演算子
10
a = 10
30
b = 30
40
a+b = 40
40
-20
a-b = -20
-20
300
a*b = 300
300
0
a/b = 0
0
10
a%b = 10
10
|
2.考察
1.コメントについて
・コメントとは自分自身(または他のプログラマ)のためにソースコード内に書
き込むメモのこと。コンパイラはすべてのコメントを無視する。コメントは
プログラマのために存在し、あとからソースコードの機能や使用方法を思い
出すことができるように、その意味と目的を説明しておくために使用する。
・//コメント
このコメントは"//"から行末尾までコメントと解釈される。
・/*コメント*/
このコメントは"/* */"で囲まれた部分がコメントと解釈される。
/*~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
*/
このように複数行でもよい
・/**コメント*/
このコメントはドキュメンテーションコメント。"/** */"で囲まれた部分が
コメントと解釈される。ドキュメンテーションコメントの利点は、ツールを
使ってソースファイルからコメントを抜き出し、そのプログラムのマニュアル
を自動的に作成することができる。
2.算術演算子について
・算術演算子とは、足し算や引き算などのこと。算術演算子にはつぎのようなものがある。
算術演算子 |
演算式 | 説明 |
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
+= | 加算代入 |
-= | 減算代入 |
*= | 乗算代入 |
/= | 除算代入 |
%= | 剰余代入 |
++ | インクリメント |
-- | デクリメント |
(2)sample2.java
ソースコード |
public class sample2 {
public static void main(String[] args){
char ch; //char型変数 ch を宣言
ch = 'A'; //変数 ch の初期化
System.out.println("文字=" + " code=" + (int)ch);
ch = '亜';
System.out.println("文字=" + ch + " code=" + (int)ch);
boolean bdt; //boolean型変数 bdt を宣言
bdt = true; //変数 bdt を初期化
System.out.println("bdt = " + bdt);
int idt; //int型変数 idt を宣言
idt = 1234567890; //変数 idt の初期化
System.out.println("idt = " + idt);
long ldt; //long型変数 ldt を宣言
ldt = 1234567890123456789L; //変数 ldt を初期化
System.out.println("ldt = " + ldt);
float fdt; //float型変数 fdt を宣言
fdt = 123.456F; //変数 fdt を初期化
System.out.println("fdt = " + fdt);
double ddt; //double型変数 ddt
ddt = 123.456789012345; //変数 ddt を初期化
System.out.println("ddt = " + ddt);
idt = 022; //変数 idt を初期化
System.out.println("8進22 = " + idt);
idt = 0x22; //変数 idt を初期化
System.out.println("16進22 = " + idt);
ddt = 5.67e4; //変数 ddt を初期化
System.out.println("指数 = " + ddt);
ch = '\n' ; //変数 ch を初期化
System.out.println("改行文字コード = " + (int)ch);
String ss; //String型変数 ss を宣言
final int CNST1 = 1234; //final定数
ss = "AAAA\tBBBB"; //変数 ss を初期化
System.out.println("ss = " + ss);
System.out.println("CNST1 = " + CNST1);
}
}
|
実行結果 |
文字= 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 = AAAABBBB
CNST1 = 1234
|
2.考察
1.基本データ型について
・基本データ型には、整数値に使うshort型、int型、double型、浮動小数点に使うfloat型、
文字列に使うstring型などがある。基本データ型について、表にまとめてみた。
基本データ型の種類 |
型名 | ビット数 | 表現できる範囲 | 分類 |
byte | 8 | -128 ~ 127 | 符号付整数 |
short | 16 | -32768 ~ 32768 |
int | 32 | -2の31乗 ~ 2の31乗-1 |
long | 64 | -2の63乗 ~ 2の63乗-1 |
char | 16 | | 文字(整数型) |
float | 32 | ±3.40282347E+38 ~ ±1.4023984E-45 | 浮動小数点数型 |
float | 32 | ±1.79769313486231570E+308 ~ ±4.94065645841246544E-324 | 浮動小数点数型 |
boolean | 1 | true/false | 論理値型 |
(3)sample3.java
ソースコード |
public class sample3 {
public static void main(String[] args) {
int i, sum; //int型変数i,sumの宣言。
for (i=1; i<=5; i++) //for文
System.out.println("i=" + i);
sum = 0; //変数 sum の初期化
for (i=1; i<=5; i++) {
sum = sum + i;
System.out.println("sum=" + sum);
}
}
}
|
実行結果 |
i=1
i=2
i=3
i=4
i=5
sum=1
sum=3
sum=6
sum=10
sum=15
|
2.考察
1.forステートメントについて
・for (i=1; i<=5; i++)
System.out.println("i=" + i);
このforステートメントは、まず変数iに1を代入しiの値を出力。
そして、iが5以下のときはiに1を足してiのn値を出力するという
ことを繰り返す。
・ sum = 0;
for (i=1; i<=5; i++) {
sum = sum + i;
System.out.println("sum=" + sum);
このforステートメントは、まず変数sumに0を、変数iに1を代入し、
sum + i の値を出力。そしてiが5以下のときはiに1を足してから、
sum + i の値を出力するということを繰り返す。
すなわち、最初はsum = 0 で i = 1 であるから、出力される値は
0 + 1 で1、次はsum = 1 で i = 2 であるから、出力される値は
1 + 2 で3、という風になる。
(4)sample4.java
ソースコード |
public class sample4 {
public static void main(String[] args) {
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以上です");
}
}
}
|
実行結果 |
i=1 3未満です
i=2 3未満です
i=3 3以上です
i=4 3以上です
i=5 3以上です
|
2.考察
1.if-elseステートメントについて
・if (i < 3)
System.out.println(" 3未満です");
else
System.out.println(" 3以上です");
()内の条件式が真である場合には、 if の後ろのステートメント(ここでは
System.out.println(" 3未満です");)が実行されelse部分は飛ばされる。
逆に、条件式が偽になる場合には、if 部分が飛ばされ、elseの後ろのステートメント
(ここではSystem.out.println(" 3以上です"); )が実行される。
(5)sample5.java
ソースコード |
public class sample5 {
public static void main(String[] args) {
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ではない");
}
}
}
|
実行結果 |
--------1
2未満
3ではない
--------2
3ではない
--------3
3である
--------4
4以上
3ではない
--------5
4以上
3ではない
|
2.考察
1.関係演算子について
・関係演算子とは2つ以上の値の大小関係を示す演算子である。
これは if 文などの条件式に用いてその真偽を問うのに使われる。
関係演算子には次の6つがある。
関係演算子の種類 |
演算子 | 説明 |
a < b | aはbより小さい |
a > b | aはbより大きい |
a <= b | aはb以下 |
a >= b | aはb以上 |
a == b | aとbは等しい |
a != b | aとbは等しくない |
(6)sample6.java
ソースコード |
public class sample6 {
public static void main(String[] args) {
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、ではない");
}
}
}
|
実行結果 |
--------1
2未満または4より大
--------2
2以上かつ4以下
1または3、ではない
--------3
2以上かつ4以下
--------4
2以上かつ4以下
1または3、ではない
--------5
2未満または4より大
1または3、ではない
|
2.考察
1.論理演算子について
・論理演算子には、論理積、論理和、排他的論理和、否定などがあり、下の真理値表が示すように各論理演算をサポートする。
論理演算子の種類 |
演算子 | 動作 | 説明 |
& | 論理積 | AND。2つの項が真のときにだけ結果が真となる論理演算 |
| | 論理和 | OR。2つの項が偽のときにだけ結果が偽となる論理演算 |
^ | 排他的論理和 | Exclusive OR。2つの項が異なるときにだけ結果が真となる論理演算 |
! | 否定 | NOT。項の真偽が逆になる論理演算 |
&& | 論理積(ショートカット) |
|| | 論理和(ショートカット) |
== | 等しい |
!= | 等しくない |
真理値表 |
a | b | a&b | a|b | a^b | !a |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
(7)sample7.java
ソースコード |
public class sample7 {
public static void main(String[] args) {
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);
}
}
}
|
実行結果 |
100
200
300
100
200
300
n=4
n=3
n=2
n=1
n=0
|
2.考察
1.インクリメント/デクリメント演算子について
・インクリメント演算子( n++, ++n )は値 n を1ずつ加算していく。それに対して
デクリメント演算子( n--, --n )は値 n を1ずつ減算していく。
2.whileループについて
・n = 5;
while (--n >= 0) {
System.out.println("n=" + n);
()内の条件式(ここでは --n >= 0 )が偽になるまで、 whike 文中の文
(ここでは System.out.println("n=" + n); )が繰り返し実行される。
今回の課題は時間がかなりかかった。内容的には、そこまで高度なことはなかったが、量が多かったので
ホームページを作るのがいつもにも増して大変だった。HTMLについてもまだまだ未熟な知識しかないので
課題を通して、HTMLについてもいろいろ学んでいくことになるだろうと思う。
参考文献:独習Java 第3版
戻る
Wikiに戻る