Report3(11/15締め切り)
@講義資料を参考に、その範囲の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の記述 public static void smp1() { public static void smp2() { public static void smp3() { sum = 0; public static void smp4() { for (i=1; i<=5; i++) { } |
〜実行結果〜
コメント My first Java. 文字列出力 GGGGG 変数宣言と数値出力 繰り返し処理 条件処理 |
〜考察〜
1. コメントについて(教科書P28~)
a.コメントとは、自分自身(または他のプログラマ)のためにソースコード内に書き込むメモの事。 b.コンパイラは全てのコメントを無視する。 c.javaのコメントには3とおりの形式がある。 c-1.単一行コメント このコメントは『//』ではじまり、行末尾までコメントとして解釈される。ex1)
int i = 10; //iはカウンタとして使用する |
c-2.複数行コメント このコメントは『/*』ではじまり、『*/』で終わる。 c言語でも用いた。ex2)
/*これはコメントですよ*/ |
c-3.ドキュメンテーションコメント このコメントは『/**』という3文字ではじまり『*/』という2文字で終わる。 利点は、javadocを用い、コメントを抜き出し、プログラムのマニュアルを自動的に作成出来る。
ex3)
/** これはJavaの ドキュメンテーション コメント。 */ |
2.println()、print()について
・どちらのメソッドとも、キャラクタを””で囲み、文字列を出力させている。 ・以前のレポートで違いを調べたが、簡単に復習すると、println()が改行あり、print()が改行なしである。ただ 今回はどちらも改行されている。これは¥nを使用しているため。
・バックスラッシュコード(エスケープシンス)
¥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.forステートメントについて(教P90〜)
a.Javaにある3つのループステートメントの中の1つ。 b.forを使うと1つまたは複数のステートメントをくり返し実行する事が出来る。
for(initialization; test; increment) statement; |
4.if-elseステートメントについて(教P87〜)
a.if-elseはifステートメントに比べ、二者択一の判断が可能となる。 b.真か偽かというふうに、if,else両方のステートメントがともに実行される事はない。
if (expression) statement 1; else statement 2; |
・サンプルプログラム2
public class Test02 {
public static void main(String[] args) { ch = 'A'; // 半角文字 bdt = true; idt = 1234567890; ldt = 1234567890123456789L; // Lはlong値を示す fdt = 123.456F; // Fはfloat値を示す ddt = 123.456789012345; idt = 022; // 8進数の22 idt = 0x22; // 16進数の22 ddt = 5.67e4; // 指数表現の56700 ch = '\n'; // エスケープ文字 ss = "AAAA\tBBBB"; // 文字列定数(エスケープ文字を含む) 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 |
〜考察〜
1変数と代入(教P12〜) a.変数とは名前のついたメモリ位置のことで、何らかの値を格納する事が出来る。 b.使用する変数をすべて使用前に宣言しなければならない。 c.宣言する事によりコンパイラに変数の型を知らせる。 d.Javaには8種類の基本データ型がサポートされ用いる。
char | 16ビットUnicodeキャラクタデータ |
boolean | 真偽値 |
byte | 8ビット符号付き整数 |
short | 16ビット符号付き整数 |
int | 32ビット符号付き整数 |
long | 64ビット符号付き整数 |
float | 32ビット符号付き符号小数点数 |
double | 64ビット符号付き浮動小数点数 |
・変数の宣言時に値を代入する事も出来る。このことを変数初期化と呼ぶ。
・long型の値を表すにはサフィックス(接尾辞)として『L』または『l』を明示しなければならない。
・flort型の値を表すにはサフィックス(接尾辞)として『F』または『f』を明示しなければならない。
・サンプルプログラム3
public class Test03 {
public static void main(String[] args) { public static void comp1() { a = 100; System.out.println("a = " + a); f = 90.0; System.out.println("f = " + f); public static void comp2() { public static void comp3() { for (a=1; a<=5; a++) { public static void comp4() { // ++演算子を使わないときの記述 // ++演算子を使ったときの記述 // --演算子を使う |
〜実行結果〜
算術演算子 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.算術演算子について(教P=20〜)
a.-には2つの意味がある。 a-1.第一に減算演算子。 a-2.第二に数値の符号を逆にするための単項演算子のマイナス。
b.*,/,%の各演算子は+とーよりも優先度が高くなる。
c.小括弧()を使用して式の評価順序を変更する事が出来る。
演算子 | 説明 |
+ | 加算 |
- | 減算(単項マイナス) |
* | 乗算 |
/ | 除算 |
% | 剰余 |
+= | 加算代入 |
-= | 減算代入 |
*= | 乗算代入 |
/= | 除算代入 |
%= | 剰余代入 |
++ | インクリメント |
-- | デクリメント |
2.関係演算子について(教P=85)
a.関係演算子は2つのオペランド(オペランド=演算の対象となるデータ)の間の関係をテストする。
演算子 | 意味 | 例 |
== | 等しい | s==k |
!= | 等しくない | s!=k |
> | より大きい | s>k |
< | より小さい | s<k |
>= | より大きいか等しい | s>=k |
<= | より小さいか等しい | s<=k |
3.論理演算子について(教P=100〜)
a.論理演算子はboolean型のオペランドに作用する。
・関係演算子の評価結果はboolean型となるため、関係演算子と組み合わせて良く使われる。
演算子 | 動作 | 説明 |
& | 論理積 | AND。2つの項が真のときにだけ結果が真となる論理演算 |
| | 論理和 | OR。2つの項が偽のときにだけ結果が偽となる論理演算 |
^ | 排他的論理和 | Exclusive OR。2つの項が異なるときにだけ結果が真となる論理演算 |
! | 否定 | NOT。項の真偽が逆になる論理演算 |
&& | 論理積(ショートカット) | |
|| | 論理和(ショートカット) | |
== | 等しい | |
!= | 等しくない |
b.&&,||の二つの演算子はショートカットと呼ばれる。 ・&、|では必ず両方のオペランドが評価される しかし、&&、||は最初に左のオペランドが評価され、右のオペランドは必要な場合だけ評価される。
c.論理積と論理和が関係する状況でショートカット演算子を使うと、無意味なステートメントによる無駄な処理が省かれるので、 効率的なコードが作成できる。
d.関係演算子を論理演算子でいくつもつなぐ事が出来る。
e.関係演算子と論理演算子の作成する値は必ず真か偽になる。 ・よって、ifステートメントやforステートメントなどで使いやすい。
〜感想&反省〜
今回は例年と異なる趣向のレポート。。考察メインなのであまり楽しくなかったなぁ...でも、知識はつきましたけど。 表を作ったりと、htmlの勉強にもなりました。 いつものように追い込まれながらの提出。。来週は中間テストなので、平均点は取れるようにがんばります!
〜参考にした本、ページ〜
独習Java 第二版 ジョゼフ・オニール
浅煎り珈琲 Java アプリケーション入門 http://msugai.fc2web.com/java/index.html