Report#3
1. 課題
- 講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・考察せよ。
サンプルソース(Test01.java)
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以上です
サンプルソース(Test02.java)
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
サンプルソース(Test03.java)
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
2.解析・考察
- Test01.javaの考察
Javaのコメントの種類
|
使い方 |
解説 |
/~/ |
//コメント |
//のあとの一行をコメントにする |
/*~*/ |
/*これはコメントです。*/ |
/*と*/で囲んだ範囲をコメントにする。 |
/**~*/ |
/**コメント*/ |
ツールを使うと自動でコメントを抜き出してマニュアルを作ってくれる。 |
- 空行、空白(字下げ)
- Javaでは(C言語でも)プログラムを見やすくするために、空白や空行(字下げ)を行うのが一般的である。これをしていないと,とても見にくいプログラムになってしまう。
- 識別子、予約語
- 識別子とは変数名、フィールド名、メソッド名、クラス名などに付ける名前の事。識別子は大文字小文字を区別し,重複は許されない(ただし、ローカル変数、フィールド、メソッド、クラス間では重複しても構わない)。予約語とはJavaで特別に意味を持つ(使い方が決められている)語の事。ifやwhileなど、主にプログラムの制御をするものは予約語である。
- Test02.javaの考察
- 基本データ型
型 |
サイズ |
値の範囲 |
数値 |
整数 |
byte |
8ビット |
-128 ~ +127 |
short |
16ビット |
-32768 ~ +32767 |
int |
32ビット |
-2147483648 ~ +2147483647 |
long |
64ビット |
-9223372036854775808 ~ +9223372036854775807 |
文字 |
char |
16ビット |
0 ~ 65535 |
浮動小数点 |
float | 32ビット |
±3.40282347E+38 ~ ±1.40239846E-45 |
double |
64ビット |
±1.79769313486231570E+308 ~ ±4.94065645841246544E-324 |
真偽値 |
boolean | - |
true false |
- データ型の変換、キャスト演算子
- キャストとは「型変換」の事。
int i = 100;
byte b = 100;
i = b;
このような場合は代入元と代入先の変数の型が異なる場合、型変換を行わなければならない。上のように「byte」型から「int」型への変換など、 小さい入れ物から大きな入れ物へは自動的にキャストしてくれる。
int i = 100;
byte b = 100;
b = i; ←エラー
b = (byte)i;
上の場合だと,大きな入れ物から小さな入れ物への変換なので、明示的に型変換を行わなければならない。
Test03.javaの考察
演算子
Javaの演算子には次のようなものがある
演算子 |
説明 |
+ |
加算 |
- |
減算 |
* |
乗算 |
/ |
除算 |
% |
剰余 |
+= |
加算代入 |
-= |
減算代入 |
*= |
乗算代入 |
/= |
除算代入 |
%= |
剰余代入 |
++ |
インクリメント |
-- |
デクリメント |
文
Javaの制御文には次のようなものがある。
- ・ifステートメント
if(式){
処理内容
}
- ()の中の式を判定して真なら{}の中を実行する(偽なら実行しない)。
if(式){
処理内容
}
else{
処理内容
}
- elseを追加するとifの()の中の式が偽の場合はelseの{}の中の処理を行う。elseに()を付加して条件を付ける事も出来る。
- ・forステートメント
for(初期化;条件;更新;){
処理内容
}
- 最初に初期化のところの文を処理する(一度だけ)。条件が真なら{}の中をループする。ループする時に更新のところの文を実行する。
- ・whileステートメント
while(式){
処理内容
}
- 式の内容が真ならループを繰り返す。()の中をtrueにして、breakステートメントでループを抜ける方法もとられる。
式
条件式で使う論理演算子には次のようなものがある。
演算子 |
説明 |
== |
等しい |
!= |
等しくない |
< |
より小さい |
> |
より大きい |
<= |
以下 |
>= |
以上 |
&& |
論理積(ショートカット) |
|| |
論理和(ショートカット) |
! |
否定演算子 |
3.感想・反省
今回の課題はとにかく長くなってしまって、大変だった。文字が多いのにスタイルシートがあまりちゃんとしていなかったので,見にくくなってしまった。
アイシー (IC)
わかりました、という意味の英語。
参考資料・参考サイト
課題のページへ