javacommand

プログラム入門
javaの復習
環境一年:祖父江
項目:変数
まとめ
・変数には値を格納できる。
・変数は、名前と方を指定して宣言する。
・変数の名前には識別子を使う。
変数に値を代入するときは「=」を使う。
・初期化により宣言と同時に初期値を格納することができる。
・変数に値を代入すると格納されている値が変更される。
・constキーワードを指定した変数は値を変更できなくなる。
変数:値を記憶させておく機能。

「型」を宣言し、「名前」を付けてあげる。
例:int shakkin;
-「名前」は任意だが、数字が先頭に来たり記号を使ったりすることに対し
てなど、いくつか制限がある。
-型(データタイプ)はそれぞれ記憶できる範囲が異なる。
例 boolean:true or false
int
:整数
double :浮動小数点
string :文字列
宣言・代入・初期化
変数の宣言:「型名 + 識別子(変数名)」
 代入:「変数名 = 式;」
 初期化:「型 識別子 = 式;」

→代入と初期化は同じ“=”を使うが厳密に言うと使い方は区別される。
特に初期化は変数を宣言したと同時にその変数にある値を格納すると
言う初期値の設定であると認識するとよい。
例 int number;
number = 3;
----------------------int number = 3;
//変数の宣言
//変数numberに3を代入
//上とは違い、変数numberを宣言し、同時にその
初期値として3を格納。
演算子とオペランド

計算するための記号を演算子、計算の対象になるものをオペランドと言
う。
例 1+3
1,3はオペランド、+が演算子になる

よく使う演算子
+, -, *, /
四則記号(優先順位は四則に従う)
%
剰余(余りをはじき出す)
&, |
(左右の計算を最後まで行う)論理積と論理和
&&, || (高速仕様)
>, >=
(より大きい、以上)
<, <=(未満、以下)
==, ! , != (等価、論理否定、非等価)
++, -- (インクリメント、デクリメント)
キャスト

変数に代入した値が代入先と違う型の場合
→小数点が切り捨てられたり(勝手に型が変わっている)、エ
ラーが出たりしてしまうので回避か、キャストしてあげる。

キャスト:コードの中で型の変換を行うことを明示的に記述
し、型変換を行うこと。
「(型) 式;」
→指定した[型]の変数(式)になる。
これは小さなサイズの型への変換で、大きなサイズの型へ
の変換は大きなサイズに勝手に変換されて演算が行われる。
例 int型とdouble型の値を掛けるとdouble型になる
項目:処理
まとめ
・for文は繰り返しを行う
・if文は条件が真なら実行
・else if文はif条件が偽且else if条件が真で実行
・switch文は条件の値がcaseと一致で実行
・while文は条件である間処理を続ける
・処理を強制的に終わらせたいときはbreak文
for文:繰り返しのための処理

「for (初期化の式, 繰り返しの範囲条件式, 終
わりに近づくための条件式){繰り返す文};」
例:for(int i = 0, i < 5, i = i + 1){
System.out.print(“a ”)};
→「a a a a a 」と表示される。
「iを0 から始めて、5未満の範囲でiを一個ずつ増やしながら
system.out.print(“a”)を表示していく」文である。
if文:条件分岐処理

「if(式){文;}」
→式の値がtrue(真)のとき{}内(つまりは文) の処理を行う。
式の値が偽のときは処理は飛ばされる。
例:int mark = 50; //例えば50点の点数があるとする。
if( mark < 60 ){
System.out.print(“アウトォ!”)
}
→「アウトォ!」と落第を宣告されること請け合い。
値が真なのでSystem.out.print(“”)の処理がされている。
else if文:not butな条件分岐

「if(式1){文1;}else if(式2){文2;}」
→elseがそもそも「他の」という意味であるが、それに沿い、if
文がカバーしていない排他領域時の処理が書かれる。
つまり、else ifは「その(if1)他で、もしこの条件のとき(if2)なら
ば」ということになる。
当然ながら、elseはifで指定した以外全ての処理範囲になる。
例 int mark = 0;
//変数markの初期化
if( mark == 100){System.out.print(“Perfect!”);}
else if( mark >= 60 & mark <100){ Syst・・・(“Good!”);}
else{ System.out.print(“Ouch!”);}
→100ならパーフェクト、100未満60以上ならGood!、それ以外
ならグェェッ、と表示される。
while,switch文(参考)

while文
「while(繰り返し続ける条件){実行文;}」
→繰り返し続ける条件がfalesになったらループを抜ける。
終わりが見えない処理のときに使いやすい。

switch文
「switch(式){
case 定数1:
文1
break;
・・・(以下同文)}」
//上の式の値が定数1のとき
//それ以下の命令を履行する。
//処理をとめるのにbreakを使う。
//分岐を増やしたいときにはcaseを増やす。
break文:処理の中断

「break;」
→繰り返しの処理はつまるところ処理をループさせている訳
で、ある条件に達したらそのループを止めなければならない。
そのとき、処理を共生的に中断させることが出来るのがbreak
になる。
処理のネスト(入れ子)

for文の入れ子
for文の中にfor文を入れる(入れ子にする)事によって二重の繰り返しが
可能になる。
動作は優先順位に沿ってより中のfor文の動作が終わると外に移動する
格好だ。
例:for(int i = 0, i < 5, i++)
{ for(int j = 0, j < 3, j++){System.out.println(“現在iは” + i +”回、jは”+ j +”回で
す。”) }
}
→i:jが「0:0」,「0:1」,「0:2」,「1:0」,「1:1」,「1:2」となっていく。

if文の入れ子
動作方はforの入れ子と同じだが、ifの入れ子は多重分岐になっていく。
項目:関数(メソッド)
ポイント
・メソッドの呼び出し(利用)と宣言(作成)
・実引数と仮引数
・戻り値とreturn文、 void型メソッド
メソッド

「型 メソッド名(仮/実引数) { メソッド内容 } 」
-実引数:メソッドを呼び出すときのカッコ内ではそのメソッドに渡すデータ。
-仮引数:メソッドを宣言するカッコ内に書く、データを受け取るための変数。
→仮引数は変数の宣言も兼ねるので型をデータの前に書く。
例: void sfcDraw(Graphics g) {
//メソッドの呼び出し(↓)
face(g, 200, 200); // (200, 200) に顔を描く
//呼び出したときに
}
//g,x,yに渡すデータ。
void face(Graphics g, int x, int y) {
//メソッドの宣言
System.out.println("draw face at (" + x + ", " + y + ")");
g.drawRoundRect(x + 10, y + 10, 80, 80, 20, 20);
g.drawOval(x + 20, y + 30, 20, 15);
g.drawLine(x + 40, y + 70, x + 60, y + 70); 95: }
戻り値とvoid型メソッド
呼び出すと実行結果の値を返してくれる値。
返り値とも言う。
 return文:メソッドと終了させる文。
「return 文;」

→returnの後に書いてある式を計算して、このメソッ
ドの返り値とする。
結果を返すメソッドは必ずreturn文を実行して返り血
を指定しなければならない。

void型のメソッドは結果を返さない。
(return文を省くか、返り値を指定しないreturn文を書
く。)
項目:配列
ポイント
・配列とは?と各要素への代入
・配列の初期化は{}に初期化子を指定する
・文字列型の配列は「””」を使った文字列を指定して初期化
・二次元以上の多次元配列
配列:たくさんの値の格納

配列:同種類の値を一つの識別子でまとめて記憶する手法。
「型名 配列名[要素数];」

配列の初期化
「型名 配列名[要素数] = {要素1の初期値,
要素2の初期値, ・・・ }」

例 int num[] = { 2, 4, 8, 16, 32 };
//要素数が5。
System.out.print(num[2])
→「4」と表示される。
文字列の場合、String型変数で{}内に「””」を忘れずに書く。
例 String week[] = { “S”, “M”, “T”, “W”, “T”, “F”, “S” }
多次元配列

「型名 配列名[要素数][要素数]・・・;」
初期化するときは
「型名 配列名[n][m][o] = {{{}×o},×m};」
例 int test[2][5][3];
→2*5*3=30個の変数が格納できる。
例2
int grade, facalty;
int students[grade][facalty] = { {1000,1001},
{850,900}, {900,950}, {1002,1003}};
→grade[3](三年)のfacalty[2](学部)students(生徒数)
は950。
項目:アプレット
ポイント
・WEBに表示する手続き
・アップロードをするファイル
項目:クラス
ポイント
・クラス概念とインスタンス
・コンストラクタ
・publicとprivate
・詳細は特に授業ページにもないので省略。
下を参照してもらえると助かる。
http://ipl.sfc.keio.ac.jp/text/prog-2003-9-c/main_p2_c8_s2.html#doc9_sec:scope
Class/instance/object
クラス (class) :objectの定義。変数やメソッドを定義する。
 インスタンス (instance) :クラスで与えられている定

義に与えた具体的な値。
– オブジェクト (object) :クラスをインスタンス化したもの。

クラスからオブジェクトを作成したい場合は、このクラスにイ
ンスタンス化と呼ばれる処理を施す。
クラスで定義されている変数に具体的な値を与えることがイ
ンスタンス化である。
メモリー上の具体的な値(リテラル)や、自分の型のクラスに
記述されているメソッドへのリンク(ポインタ)のことをインスタ
ンス と考えればよい。
例
クッキーの「抜き型」がクラスであり、そこに詰め込む
「生地」がインスタンスであり、「出来上がったクッ
キーと抜き型」がオブジェクトである。
別の例を挙げると、銀行口座というクラスがあるとき、
新規口座を開設することがインスタンス化であり、出
来上がった口座がオブジェクトである。
名義、口座番号、残高の具体的な値がインスタンス
であり。或る口座(オブジェクト)に預金する(メソッ
ド)のメッセージを送ると、その口座の残高(変数の
値)を操作することになる。
作り方
クラス:「class クラス名 { クラス本体 } 」
 インスタンス:
「クラス名 変数名 = new クラス名(); 」

コンストラクタ

クラスを元にオブジェクトを生成する(インスタンス化)とき、初
期化を行わなければいけない場合の実現手法。
「クラス名(引数リスト) { 処理; } 」
つまり・・・

classを部品化して、再利用するのだが、実際にはそのクラス
を「インスタンス」に、変化させて使います。
簡単に言えば、new が含んだプログラムを書きこむ。
もう一つ、「メソッド」は、具体的には、計算結果やアクション
を書いてあるプログラムをさす。
クラスの中に「メソッド」名を決めて作る。
このメソッドの仲間が「コンストラクタ」で、メソッドとコンストラ
クタの違いは、まずメソッドはそのメソッドが含まれているクラ
スを「インスタンス」化して、オブジェクトを作ってから、その
「メソッド」を呼び出して始めて実行されるのですが,「コンスト
ラクタ」は、その「コンストラクタ」が含まれているクラスが「イ
ンスタンス」化されると、同時に実行されます。
publicとprivate

クラスを定義するときのアクセス子としてpublicと
privateがある。

「public:」「private:」のように記述。

「public:」を記述すると宣言した変数がそのクラスだ
けでなくクラスの外で使用できるようになる。
(private:は省略可。通常その状態にある。)
これは他のメソッドで使えるグローバル変数とそうで
ないローカル変数の関係とほぼ同じである。
