プログラミング2 Java
課題
Javaの文法解説I{~11/15(Mon)}
講義資料を参考に、その範囲のJavaの基礎的な文法について教科書と対応させな
がら解説し、考察せよ。
[1]算術演算子
コメント
プログラム
/*
*
*コメント
*
*/
public class rep3A {
public static void /*これもコメント*/ main(String[] args) {
System.out.println("算術演算子"); //これもコメント
int a, b, c; //a, b, cをそれぞれ初期化
a = 100; //a = 100を代入。
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をここで直接計算し、計算結果を出力する。
}
}
実行結果
100
a = 100
30
b = 30
130
a+b = 130
130
70
a-b = 70
70
3000
a*b = 3000
3000
3
a/b = 3
3
10
a%b = 10
10
コメントについて
コメントとは自分自身(または他のプログラマ)のためにソースコード内に書
き込むメモのこと。コンパイラはすべてのコメントを無視する。コメントはプロ
グラマのためだけに存在し、あとからソースコードの機能や使用方法を思い出す
ことができるように、その意味と目的を説明しておくために使用する。
System.out.println("算術演算子"); //これもコメント
「//」ではじまり、その行以降の文字が行末尾までコメントとして解釈される。
/*これはコメント*/
/*
これも
コメント
だよ。
*/
このコメントは「/*」ではじまり、「*/」で終わる。
/**
これはJavaの
ドキュメンテーション
コメント。
*/
これはドキュメンテーションコメント。このコメントは「/**」という3文字
ではじまり、「*/」という2文字で終わる。
ドキュメンテーションコメントの利点は、ツールを使ってソースファイルから
コメントを抜き出し、そのプログラムのマニュアルを自動的に作成することが
できる。
算術演算子とは・・・
ようは足し算の + や、引き算の - のこと。次の12種類がある。
算術演算子
演算子 |
説明 |
+ |
加算 |
- |
減算(単項マイナス) |
* |
乗算 |
/ |
除算 |
% |
剰余 |
+= |
加算代入 |
-= |
減算代入 |
*= |
乗算代入 |
/= |
除算代入 |
%= |
剰余代入 |
++ |
インクリメント |
-- |
デクリメント |
[2]基本データ型
プログラム
public class rep3B {
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
基本データ型とは・・・
整数値に使うshort型、int型、double型、浮動小数点数に使うflort型、文字
列に使うstring型等様々あり、それぞれの値に適した型を使用しなければならな
い。
基本データ型の種類
型名 |
ビット数 |
表現できる範囲 |
分類 |
byte |
8 |
-128(- 2の7乗) ~ 127(2の7乗-1) |
符号付整数 |
short |
16 |
-32768(- 2の15乗) ~ 32767(2の15乗-1) |
int |
32 |
-2147483648(- 2の31乗)~ 2147483647(2の31乗-1) |
long |
64 |
-9223372036854775808(- 2の63乗) ~ 9223372036854775807(2の63乗-1) |
char |
16 |
|
文字(整数型) |
float |
32 |
±3.40282347E+38 ~ ±1.40239846E-45 |
浮動小数点数型 |
double |
64 |
±1.79769313486231570E+308 ~ ±4.94065645841246544E-324 |
boolean |
1 |
true/false |
論理値型 |
[3]繰り返し処理
プログラム
public class rep3C {
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);
}
}
}
実行結果
文字= 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
for ステートメントとは・・・
for (i=1; i<=5; i++)
System.out.println("i=" + i);
まずループ制御変数 i に初期化として 1 を設定。次に式 i<=5 が評価される。
この結果は真となるため for ループが開始される。その値を表示した後、 i は
インクリメントされ、条件テストが再び評価される。このプロセスが繰り返され
て i が6に達すると for ループは停止する。
[4]条件処理
プログラム
public class rep3D {
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以上です
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]関係演算子
プログラム
public class rep3E {
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つ以上の値の大小関係を示す演算子である。これは 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]論理演算子
プログラム
public class rep3F {
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、ではない
論理演算子とは・・・
論理演算子には、論理積、論理和、排他的論理和、否定などがあり、下の心理値表が示すように各論理演算をサポートする。
論理演算子の種類
演算子 |
動作 |
説明 |
& |
論理積 |
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]インクリメント/デクリメント演算子
while ループ
プログラム
public class rep3F {
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
インクリメント/デクリメント演算子とは・・・
インクリメント演算子( n++, ++n )は値 n を1ずつ加算していく。それに対して
デクリメント演算子( n--, --n )は値 n を1ずつ減算していく。
while ループとは・・・
n = 5;
while (--n >= 0) {
System.out.println("n=" + n);
()内の条件式(ここでは --n >= 0 )が偽になるまで、 whike 文中の文(こ
こでは System.out.println("n=" + n); )が繰り返し実行される。
感想
簡単そうでやたら時間がかかってしまった。でもこういう基礎的なところを僕
は中途半端なまま頭に入れていて、今回それをしっかりと知識に入れることがで
きたのでとてもよかった。できればこのような課題は前期のC言語のときに出し
てほしかった。
あと HTML の知識も少しつけることができたのもよかった。
参考文献
独習 Java 第2版 ジョセフ・オニール 著
トップスタジオ 訳
武藤 健志 監修