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

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

 

ゲッタとセッタとアクセッサー

getter:フィールドの値を取得するメソッド
setter:フィールドに値を設定するメソッド
accessor:両者の総称

クラス型変数の代入

クラス型の変数を同一型の変数によって初期化するか、同一型の変数を代入すると、参照先がコピーされる。全フィールドの値がコピーされるわけではない。

クラス型変数の比較

クラス型変数に適用された等価演算子==と!=は、参照先が同一であるかないかを判定する。フィールドの値が等しいかどうかの判定を行うわけではない。

クラス型インスタンスの配列

クラス型のインスタンスの配列を利用するためには、クラス型変数の配列を生成した後に、個々の要素のインスタンスを生成しなければならない。

publicクラス

publicの有無によってクラスのアクセス性が変わる。
public無し:そのクラスは同一パッケージの中でのみ利用できるものとなる
public有り:そのクラスはどこからでも利用できるものとなる。

小規模で使い捨てのクラスでない限りクラスには原則としてpublicを付けて宣言する。

publicクラスの中でpublic付きで宣言されたメソッドは、パッケージとは無関係にどこからでも利用できるものとなる。

コンストラクタ多重定義

メソッド同様コンストラクタは多重定義できる。必要であればコンストラクタを多重定義しクラスインスタンス構築のための複数の方法を提供せよ。

コピーコンストラクタ

自分自身と同じクラス型の引数を受け取って全フィールドの値をコピーするコンストラクタのこと。

toString:文字列を返すメソッド

そのクラスのインスタンスの現在の状態を文字列表現で返却するメソッドは以下の形式で定義する。
public String toString() { /*...*/ }

文字列の連結について

「文字列+クラス型変数」あるいは「クラス型変数+文字列」の演算では、そのクラス型に対してtoStringメソッドが自動的に呼び出されて文字列に変換された上で文字列の連結が行われる。

フィールドの初期化

フィールドの宣言に初期化子を与えておけば、そのフィールドはインスタンス生成時に与えられた初期化子の値で初期化される。

同一クラス内のコンストラクタの呼び出し

コンストラクタの先頭ではクラス内の他のコンストラクタを、this(...)によって呼び出すことができる。
同一あるいは類似のコードをクラス中に散在させるべきではない。行う処理が他のメソッドやコンストラクタで実現されていればそのメソッドやコンストラクタを呼び出すべきである。

参照を返すメソッド

参照値を通じて外部から間接的に値を書き換えられてしまうので、不用意に参照型フィールドの値を返却してはいけない。

コンポジション

インスタンスが内部に別のインスタンスを持つ構造のこと

has-Aの関係

あるクラスがその一部分として別のクラスをもつこと

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

クラス

メソッドとその処理対象となるデータを組み合わせた構造を表す。
new演算子によって生成されたクラス型の実体をインスタンスと呼び、インスタンスを生成することをインスタンス化という。
クラスのインスタンスと配列の本体をオブジェクトと総称する。

メンバアクセス演算子(ドット演算子/フィールドアクセス演算子)

x.y :xが参照するインスタンス内のメンバ(要素)yをアクセスする

インスタンス変数

インスタンス内のフィールド

フィールドの初期化

クラスインスタンス内のフィールドであるインスタンス変数は既定値で初期化される(配列の構成要素と同様である)
クラス型であるString型は一種の参照型で、参照型の既定値は空参照nullである。

データ隠蔽

データを外部から隠して不正なアクセスから守ること。
private宣言されたフィールドはクラスの外部に対して非公開になる。
情報を公開するかどうか決めるのはクラス側。
データ隠蔽を実現しプログラム品質を向上させるため、クラス内のフィールドは原則非公開にすべきである。
privateが指定されていないフィールドはデフォルトアクセス(パッケージ内での公開)となる。

メンバ

フィールドやメソッドの総称。

コンストラクタ(構築子)

不完全あるいは不正な初期化を防止し、インスタンスを適切に初期化する。
メソッドと異なり値を返却できない。
クラス型を宣言するときは必ずコンストラクタを用意してインスタンスを確実かつ適切に初期化する手段を提供すること。
クラスにコンストラクタを定義しなければ本体が空のデフォルトコンストラクタが自動的に定義される。

メソッド

staticのつかないメソッドは、概念的には個々のインスタンスごとに作られてそのインスタンスに属するのでインスタンスメソッドという。
static付きのメソッドはクラスメソッドという。

カプセル化

フィールドを非公開として外部から保護した上で、メソッドとフィールドとをうまく関係させること。

this参照

クラスのフィールドと同名の仮引数や局所変数を持つコンストラクタおよびメソッドの本体ではフィールドの名前が隠される。
コンストラクタおよびメソッドは自分を起動したインスタンスへの参照をthisとしてもっている。
thisを使うメリット:
仮引数の名前を何にするのかを悩む必要から解放される。
どのフィールドに値を設定するための引数であるのかがわかりやすい。

 

この章はまあまあわかりやすい。

7章が無理。

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:文字列で出力

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