oracleJavaSilverの勉強日記(演算子と判定構造の使用)
代入演算子
代入演算子は左右のオペランドの評価が終わっていなければ代入できない。
「+=」の意味は「a+=10;」だった場合、「a=a+10」と同じ意味。変数aの値に10を足してから、変数aに代入する。「-=」や「*=」も同じ意味。
マイナス演算子
マイナス演算子「-」には、左オペランドから右オペランドの値を引く二項演算子と正負の値を反転させるために使う単項演算子の2種類ある。
二項演算子はただの引き算。
単項演算子はプラスの値であればマイナスに、マイナスであればプラスになる。
型変換
数値を演算する時、演算子の両側のオペランドは同じ型でなければいけない。もし、オペランドの型が異なる場合には、小さい方の型は大きい方の型に自動的に変換される。
数値リテラルは、範囲が大きい型から小さい型に代入する時は明示的なキャスト必要。
ただし、byteやshort型の変数に代入する整数リテラルの場合、その値が型の範囲内であればコンパイルエラーにならない。
インクリメントとデクリメント
インクリメント演算子「++」とデクリメント演算子「--」は、変数の値に1を加算したり、1を減算したりするための演算子。
前値インクリメント「++a」と後値インクリメント「a++」
前値インクリメント「++a」は、先に加算し、その値をaに入れる。
後値インクリメント「a++」は、aに前の値を入れて、その後に加算して、aに入れる。
関係演算子
関係演算子は、左右のオペランドの値を比較し、真偽値を戻す演算子。
※instanceof以外は数値以外には使えず、使った場合コンパイルエラーになる。
論理演算子
&や&&は両方がtrueの時だけtrueになる。
|や||は両方がfalseの時だけfalseになる。
&&や||は「ショートサーキット演算子」とも呼ばれ、左オペランドの結果によっては右オペランドを評価しない。
&&演算子は左オペランドがfalseを戻すのであれば、falseが確定するので右オペランドは評価しない。※&演算子の場合は評価する
||演算子は左オペランドがtrueを戻すのであれば、trueが確定するので右オペランドは評価しない。※|演算子の場合は評価する。
演算子の優先順位
演算子には優先順位があり、同じ優先順位であれば式は左から順に実行される。
(),++,--が最優先
*,/,%が同順位
+,-が同順位
同一性と同値性
同一性は同じインスタンスを参照していること
同値性は違いインスタンスを参照しているが、同じ値。
同一性は「==演算子」で判定する。戻り値はbooleanで、左右のオペランドが同じインスタンスを参照していたら、trueを返す。
同値性は「equalsメソッド」で判定する。Objectクラスのequalsメソッドは同一性を判定していることになってしまうので、オーバーライド前提。
オーバーロード
オーバーロードは同じ名前で複数メソッドを定義できる。
オーバーロードのルール
・同じ名前でメソッドを定義する。
・各メソッドの引数の型・個数・並びが異なるようにする。
コンスタントプール
文字列リテラルは、同じインスタンスへの参照が使いまわしにされる。そのため、同じ参照になる。
※new演算子を使って、明示的にインスタンスを生成すれば、別の参照になる。
if文
if文の構文
if(条件式){ 条件に一致したとき実行する処理}
if文の中の{}は省略可能で、省略した場合は、次の一文だけ実行される。残りのやつはif文とは無関係と判断される。
if-else if文
if-else if文は、elseとif文の間で改行することはできない。もし、改行したらif文はelse文の中にある分岐として解釈される。
switch文
条件式が戻す値と一致するcace式を記述する。条件式が戻せる値の型には制限がある。
・int型以下の整数型とそのラッパークラス
・文字と文字列
・列挙型(enum)
switch文では、cace値にマッチする処理が実行される。処理が終わればbreakを使って抜けるようにする。もし、breakを記述しなかった場合は、現れるすべてのcase式の処理がbreakが現れるまで実行される。一致するものが無ければ、default文以降が実行される。
case値
case値として使用できる値は、条件がある
・条件式が戻す値と同じ型か互換性がある方であること
・定数であるか、コンパイル時に値を決めることができること
・nullでないこと
※定数はfinal宣言された変数かリテラル
三項演算子
条件に合致するかどうかで、戻す値を変更する演算子。
構文
真偽値式?trueの場合に評価する式:falseの場合に評価する式