読者です 読者をやめる 読者になる 読者になる

switch文

 

switch文を使う際わからなくなったのでメモ

 

switch(month) {

case 1 : System.out.println("今月は31日までです。");

break;

case 2 : System.out.println("今月は28日までです。");

break;

case 3 : System.out.println("今月は31日までです。");

break;

case 4 : System.out.println("今月は30日までです。");

break;

case 5 : System.out.println("今月は31日までです。");

break;

case 6 : System.out.println("今月は30日までです。");

break;

case 7 : 

case 8 : System.out.println("今月は31日までです。");

break;

case 9 : System.out.println("今月は30日までです。");

break;

case 10: System.out.println("今月は31日までです。");

break;

case 11: System.out.println("今月は30日までです。");

break;

case 12: System.out.println("今月は31日までです。");

break;

default: System.out.println("入力が間違っています。");

break;

 

この場合、数字の順序などは気にせず、結果が同じ同士でまとめて書くことができる。

 

switch(month) {

case 2 : System.out.println("今月は28日までです。");

break;

 

 

case 4 :

case 6 :

case 9 :

case 11 : System.out.println("今月は30日までです。");

break;

 

case 1 :

case 3 :

case 5 :

case 7 :

case 8 :

case 10:

case 12: System.out.println("今月は31日までです。");

 break;

 

 default: System.out.println("入力が間違っています。");

break;

}

メモ

DI・DIコンテナ

フレームワーク

Git

ウォーターフォール

VSS

アジャイル

 

どんな工程があるか

 

質問

何を使ってきたか

使うものの基本理念をおさえているか

自分が得意なとこ

プロジェクトで使う基本的なものに触れたことがあるか

使うものの好み(例えばディストリビューション

使用端末

タスク管理の仕方

ビルドツール

案件管理の仕方

チーム体制

 

明解Java入門編 第6章まとめ

配列

同一型の変数である構成要素が直線状に並んだもの。
同一型の変数の集まりをひとまとめにする。
個々の構成要素の型である構成要素型はなんでも良い。
配列内の個々の変数を識別するため番号が必要(0から始まる連番)。
配列の要素数が既知の定数であればその値をfinal変数で表すと良い。

配列変数の宣言

普通の変数と同様、配列にも宣言が必要。
int a;
int a
;
どちらでも構わない。
この宣言により作られるaは配列変数と呼ばれる特殊な変数である(配列の本体ではなく、配列本体を参照する変数)。

配列本体の生成

配列変数とは別に生成する。
newによって生成。

構成要素のアクセス

配列本体内の個々の要素のアクセス(読み書き)はインデックスを中に与えることにより行う。
配列変数名[インデックス]
配列a中の先頭からi個後ろの構成要素はa[i]としてアクセスできる。

既定値

配列の構成要素は明示的に初期化しなくても0で初期化される(規定値)。

要素数の取得

配列の要素数は長さと呼ばれる。
配列の長さ=要素数は"配列変数名.length"によって取得できる。

配列の初期化と代入

配列に与える初期化子は各要素に与える初期化子◯,△,□をコンマで区切って{}で囲んだ[◯,△,◻︎}という形式である。
inta;
a={1,2,3}; ×
inta;
a=new int
{1,2,3}; ◯

new演算子による配列の生成時は"new 要素型"の後ろに初期化子をつけてもいいことになっている。

走査

配列要素を順にひとつずつなぞっていくこと。

探索とキー

ある値をもつ要素の存在を調べることと調べる値のこと。
キー値と同じ値が配列中にあるとは限らない。

線形探索または逐次探索

配列の要素を先頭から順に走査することにより探すべきキー値と同じ要素に出会う探索のアルゴリズムのこと。
キーと同じ値の要素が複数個存在する場合、その中で最も先頭に位置する要素をみつける。

拡張for文(for-in文,for-each文)

配列の走査を簡潔にかける。配列の要素数を調べる手間が省ける。
配列の全要素を走査する過程においてインデックス自体の値が不要であればその走査は拡張for文によって実現すると良い。
例) for (型 i : a)
:は〜の中のという意味である。

配列のコピー

代入演算子によって配列を代入しても全要素がコピーされるわけではなく、参照先が変更されるだけ。
配列をコピーする際は繰返し文によって全要素を逐一コピーする必要がある。

文字列の配列

配列の型はStringとなる。

参照型とオブジェクト

newで生成される配列本体は通常の変数と違いプログラムの実行時に生成されそのための記憶域が動的に確保される。
配列の本体は通常の変数とは性質が異なるためオブジェクトと呼ばれる。
オブジェクトを指すための変数の型が参照型である。
配列変数の型である配列型は参照型の一種である。

空型と空参照・空リテラル

nullは空リテラルと呼ばれる。
リテラルが代入されたaは空参照となる(何も参照していないことを表す特殊な参照。型は空型)
空参照を出力するとnullと表示される。

ガーベジコレクション

配列変数に対してnullを代入したり、他の配列本体への参照を代入するともともとの配列本体はどこからも参照されないゴミとなる。
ゴミの放置は記憶域の不足を招く。
どこからも参照されなくなったオブジェクト用の領域は再利用できるよう自動的に解放される(ガーベジコレクション

finalな配列

配列変数はfinal変数として宣言することができる。
finalとなるのは参照先で個々の要素の値は書き換えられる。
配列変数をfinalとしておけば誤ってnullを代入したり、他の配列本体への参照を代入したりすることを防げる。

多次元配列(この本での表現)

配列の構成要素自体が配列である状態。

2次元配列

例)『int型を構成要素型とする配列』を構成要素型とする配列

3次元配列

例)『long型を構成要素型とする配列』を構成要素型とする配列

 

 

配列わけわからなくなってるので簡単なとこからやり直すように。

明解Java入門編 第5章まとめ

基本型

Javaで利用出来る型を大別すると基本型と参照型とに分かれる。
基本型はさらに2つにわかれる。

数値型

整数を表す5種類の整数型と実数を表す2種類の浮動小数点型がある。

論理型

論理値を表す論理型(boolean)は真偽いずれかの値を表現する型。

型とビット

式には型があり、型と値が同じであれば記憶域上の内部表現も同じものになる。
内部表現は0または1の値を持つデータ単位であるビットの集まりである。
値を表現するためのビットの個数や個々のビットの意味は型によって異なる。

整数型

有限範囲の連続した整数を表現する型。
5種類ある
char byte short int long
これらの型では小数点以下の部分を持つ実数は表せない。

char型

文字を表すための型。
非負の値しか表せない。
0と正の値を表現する符号なし整数型。

byte型/short型/int型/long型

整数を表すための型。
負の値,正の値を表現する符号付き整数型。
各型の表現可能値が異なるのは構成ビットが異なるため。
これらの型ではビット数の多い型ほど表現範囲も広くなる。

byte

1バイト(8ビット)の整数。1バイトのデータを表す際利用。

short

短い整数。小さな値しかとり得ないことがわかっていて、記憶域を節約したい場合利用。

int

整数型の中で最も基本的な型。通常これを利用。

long

長い整数。int型では表現できない大きな値が必要な場合利用。

整数リテラル

整数型の定数を表す。
6種類ある。
・10進整数リテラル(int型/lomg型)
 10や57といった日常で使う数字

・8進整数リテラル(int型/long型)
 先頭に0をつけ2桁以上で表記する
 
・16進整数リテラル(int型/long型)
 先頭に0xまたは0Xをつけ表記する
 A~Fの大文字小文字は問わない

整数接尾語

lまたはLを末尾につけた整数リテラルの型はlong型になる。

整数の内部

符号ビット:0
0または正
符号ビット:1

負の値は2の補数表現という表現法で表される。

浮動小数点型

小数点以下の部分を持つ実数を表すのが浮動小数点型。
表現範囲は大きさと精度の両方から制限を受ける。
float
double

浮動小数リテラル

57.3のように実数を表す定数のことをいう。
10進表記と16進表記が可能。

浮動小数点接尾語

型を指定する。
float型:fとF
double型:dとD
指定しない場合double型とみなされる。

論理型(boolean型)

真を表すtrueと偽を表すfalseのいずれかの値を持つ。
足したり引いたり割ったりできない。
以下の文脈で使用可。
・if文の制御式
・do文,while文,for文の制御式
・条件演算子?:の第1オペランド

「文字列+論理値」あるいは「論理値+文字列」の演算を行うと論理型の値が"true"もしくは"false"に変換された上で連結される。

演算と型

int型同士の算術演算・double型同士の算術演算によって得られる値の型はオペランドと同じ型になる。

二項数値昇格

算術演算の対象となるオペランドの型が異なる時、小さい方の型のオペランドはより大きいほうの型に変換された上で演算が行われる。
(大きいとは余裕があるという意味)

二項数値昇格における型変換

・一方のオペランドがdouble型ならば他方をdouble型に変換する。
・そうでなく、一方のオペランドがfloat型ならば他方をfloat型に変換する。
・そうでなく、一方のオペランドがlong型ならば他方をlong型に変換する。
・そうでなければ、両オペランドをint型に変換する。

数値の徐算における商を実数値として求めるためには少なくとも一方のオペランド浮動小数点型でなければならない。

キャスト演算子

(型)x:xを型に変換した値を生成。

基本型の縮小変換

より小さい型への値の代入にはキャストが必要である。

種類

short→byte,char
char→byte,short
int→byte,short,char
long→byte,short,char,int
float→byte,short,char,int,long
double→byte,short,char,int,long,float

縮小変換には原則としてキャストが必要。

例外

代入の右辺の式や初期化子がbyte,short,char,int型の定数式で、代入先あるいは初期化先の変数の型がbyte,short,charであって、定数式の値が変数の型で表現できる場合、基本型の縮小変換が自動的に行われるのでキャスト不要である。(定数式に限られ、変数であれば必ずキャストが必要)
浮動小数点型はこのような規則がない。

変換に伴い数値の大きさの情報や精度を失うことがある。

基本型の拡大変換

代入あるいは初期化の際に自動的に行われる。キャスト不要。

種類

byte→short,int,long,float,double
short→int,long,float,double
char→int,long,float,double
int→long,float,double
long→float,double
float→double

数値の大きさに関する情報は原則失われない。
intあるいはlongの値からfloatへの変換、longの値からdoubleへの変換については精度を失うことがある。
この場合浮動小数点数の変換結果は最も近い値に丸められた整数値となる。

基本型の拡大変換と縮小変換

byteからcharへの変換ではbyteは基本型の拡大変換によりintへ変換され、その後基本型の縮小変換によりintからcharへと変換される。

繰返しの制御

繰返しの判定基準とする変数には浮動小数点数ではなく整数を使用する(浮動小数点数がすべての桁の情報を失うことなく表現できるとは限らないため)。

拡張表記

\を先頭にした文字のならびによって単一の文字を表す表記法。
文字リテラルや文字列リテラルで使用する。

\b 後退:表示位置を直前の位置へ移動する
\f 書式送り:改ページし次ページの先頭へ
\n 改行:改行し次の行の先頭へ
\r 復帰:現在の行の先頭位置へ
\t 水平タブ:次の水平タブ位置へ
" 文字":二重引用符
\' 文字':単一引用符
\ 文字:バックスラッシュ
\ooo oooは8進数:8進数でoooの値を持つ文字
Unicode拡張\uhhhh hhhhは16進数:16進数でhhhhの値を持つ文字

明解Java入門編 第4章まとめ

do文

式を評価した値がtrueである限り文を繰り返し実行する。
構文図:do 文 while (式);
do文が繰り返す文のことをループ本体と呼ぶ(この本では)

while文

式を評価した値がtrueである限り文を繰り返し実行する。
構文図:while (式) 文

増分演算子

変数の値をひとつ増やす(インクリメント)演算子++。

減分演算子

変数の値をひとつ減らす(デクリメント)演算子--。

後置増分演算子

x++:xの値をインクリメントする。生成するのは増加前の値。
例) xの値が5のときy= x++;
yに代入されるのは5
代入完了後の値は6
これは後置減分演算子も同じ
  

後置減分演算子

x--:xの値をデクリメントする。生成するのは減少前の値。
  後置という名前はオペランドの後ろに演算子を適用することに由来する。

前置増分演算子

++x:xの値をインクリメントする。生成するのは増加後の値。
例) xの値が5のとき y= ++x;
yに代入されるのは6
代入完了後の値も6
これは前置減分演算子も同じ

前置減分演算子

--x:xの値をデクリメントする。生成するのは減少後の値。

式の評価順序

2項演算子の左オペランドは右オペランドよりも先に評価される。

式の値の切り捨て

演算結果は使わずに切り捨てできる。

文字リテラル

単一引用符'で囲んだ式。
文字リテラル'*':単一の文字*を表す。型はchar。
文字列リテラル"*":文字*だけから構成される文字のならびを表す。型はString。

while文とdo文

do文のループ本体は必ず一回は実行されるがwhile文のループ本体は1回も実行されない可能性がある。

do文

後判定繰返し:ループ本体を実行した後に判定を行う

while文

前判定繰返し:ループ本体を実行する前に判定を行う

whileというキーワードを使うのは共通なため、do文のループ本体はたとえ単一文であっても{}で囲んでブロックにし読みやすくする。

複合代入演算子

*=,/=,%=,+=,-=,<<=,>>=,>>>=,&=,^=,|= など
演算と代入というふたつの働きを持つ。

メリット

行うべき演算を簡潔に表せる。
左辺の変数名を書くのが一回で済む。
左辺の評価が一回限りである。

for文

定型的な繰返しの制御をwhile文より簡潔に実現できる。
構文図:for(for初期化部;式;for更新部)文

for初期化部

変数の宣言を置くことができる(宣言する変数はそのfor文の中でのみ使用可。for文ごとに宣言が必要)。
複数の変数を定義する場合「,」で区切る。
必要なければ省略もできる。

省略した場合繰返し継続の判定は常にtrue。
breakやreturn文を実行しない限り無限ループになる。

for更新部

複数の式を「,」で区切って置ける。省略もできる。

繰返し文

do,while,for文をあわせて繰返し文という。
今回のfor文は基本for文という。

多重ループ

繰返し文のループ本体を繰返し文にすると二重、三重の繰返しを行うことができる。

break文

繰返し文を強制的に中断、終了させる。

continue文

ループ本体の残り部分がすっ飛ばされてプログラムの流れはループ本体の末尾へ一気に飛ぶ。

do文とwhile文のとき

continue文の後ろに置かれている文2の実行がスキップされ繰返しをするかどうかの判定をする式の評価が行われる。

for文のとき

continue文の後ろに置かれている文2の実行がスキップされ次の繰返し準備のための更新部が評価・実行されてから式の評価が行われる。

ラベル付きbreak文・continue文

多重ループの実行中に外側の繰返しを一気に抜け出たり、強制的に繰返しを続けたい場合、ラベル付きbreak文やラベル付きcontinue文を使う。
構文図:ラベル付き文→識別子→:文

break文とcontinue文

break文とcontinue文は全部で4つ(ラベル付き、なし)。
continue文はラベルありなしのいずれも繰返し文の中でのみ利用可。
break文はラベルなしのとき、switch文と繰返し文の中でのみ利用可。
ラベル付きの場合ラベル付き文の中であれば利用可。

printfメソッド

基数や桁数などの書式を制御して画面への表示を行う。

書式文字列

%d:10進数で出力
%o:8進数で出力
%x:16進数で出力(a~fは小文字)
%X:16進数で出力(A~Fは大文字)
%c:文字として出力
%f:小数点形式で出力
%s:文字列で出力

%を文字として出力したい場合%%と表記する必要がある。

do-while文とwhile文の違い

処理の仕方

do-while文

繰り返す対象の処理

繰り返すかの判定

do {
ケーキを食べる この処理を繰り返す(一回は必ずやる)
} while(ケーキは残っている?); この条件を満たす間

while文

繰り返すかの判定

繰り返す対象の処理

while(ケーキは残っている?){
ケーキを食べる
}
*最初の時点で繰り返す条件を満たさないなら処理は一度もしない

 

参考

wa3.i-3-i.info

明解Java入門編 第3章まとめ

if文

ある条件が成立するかどうかによって、行うべき処理を選択的に決定する。

if-then文

構文:if(式)文
式の値を調べてその値がtrueのときのみ文を実行する。falseのときは何も表示されない。
ある条件が成立したときのみ行うべきことがある場合使う。
()内に書かれた条件判定式を制御式と呼ぶ。
trueとfalseは論理値リテラルと呼ばれる論理型のリテラルである。

関係演算子

「 > 」のようにオペランドの大小関係を判定する演算子のこと。
x < y xがyより小さければtrue,そうでなければfalse
x > y xがyより大きければtrue,そうでなければfalse
x <= y xがyより小さいか等しければtrue,そうでなければfalse
X >= y xがyより大きいか等しければtrue,そうでなければfalse

関係演算子は2項演算子である。

1 <= a <= 3 という記述はできない
a >= 1 && a <= 3 というように記述する

if-then-else文

構文:if(式)文 else 文
制御式の値がtrueであれば先頭側の文を、falseであれば末尾の文を実行する。
条件の真偽によって異なる処理を行う場合if-then-else文を使う。

等価演算子

「==」と「!=」のこと。
x == y xとyが等しければtrue,そうでなければfalse
X != y xとyが等しくなければtrue,そうでなければfalse

等価演算子は2項演算子である。

a == b == c という記述はできない
a == b && b == c というように記述する

論理補数演算子

単項演算子「!」のこと。
!x xがfalseであればtrue,そうでなければfalse

入れ子となったif文

elseが制御する文はif文であっても良い。
例)
if()

else
if()
else

変数・リテラル・変数やリテラルを結合したもの。
演算子によって結合された式は〜式という。(代入演算子では代入式)

評価

式の値を調べること

式文

式に「;」をつけた文。
「;」だけでも文とみなされる(空文)
if文の条件()の後ろに誤って空文を置かないように。

論理積演算子&&

x && y:xとyがともにtrueであればtrue,そうでなければfalse(xかつy)
xを評価した値がfalseであればyの評価をしない。

論理和演算子||

x || y:xとyの一方でもtrueであればtrue,そうでなければfalse(xまたはy *どちらか一方でもという意味になる)
xを評価した値がtrueであればyの評価をしない。

論理演算の式全体の評価結果が左オペランドの評価結果のみで明確になる場合に、右オペランドが評価されないことを短絡評価という。

条件演算子

xがtrueであればyを評価した値を,そうでなければzを評価した値を生成する。
x ? y : z

アルゴリズム

処理の流れを定義したもの。
JISX0001では「問題を解くためのものであって、明確に定義され、順序付けられた有限個の規則からなる集合」と定義されている。

ブロック

文の並びを{}で囲んだもの。
{}の中の文の個数は任意。
単一の文が要求される箇所で複数の文を実行せねばならない場合に使う。
ブロック内でのみ利用する変数はそのブロック内で宣言する。

switch文

プログラムの流れを一度に複数に分岐できる。
()で囲まれた制御式は整数型でなくてはならない。

ラベル

プログラムの飛び先を示す目印
異なるラベルが同じ値をもつことは許されない。
値は定数でなければならず変数は許されない。

break文

プログラムのながれがswitch文から抜け出す。
最後のケース部の末尾にもbreakをつける。

defaultラベル

どのラベルとも一致しないときの飛び先を表す。

選択文

if文とswitch文のことを選択文という。
単一の式の値によるプログラムの流れの分岐はswitch文を利用した方が全体の見通しが良いため読みやすくなる。

キーワード

ifやelseといった語句には特別な意味が与えられている(キーワード)。
プログラム作成者が変数などの名前として利用することはできない。

区切り子(分離子とも)

キーワードは一種の単語のようなもので、単語を区切るために使われる記号が区切り子。
{},:.などがある。

識別子

変数、ラベル、メソッド、クラスなどに与えられる名前。
1文字目は文字(
$と_を含む)2文字目以降は文字、数字を含む($と_を含む)

漢字文字も含まれる(オススメはしない)

リテラル

プログラムを構成する要素のひとつ。

代入式の評価

代入式を評価すると代入後の左オペランドの型と値が得られる。