基本型と演算 - 演算について

ちと間が空きましたが前回の続き、基本型と演算についての
演算についてをまとめたいと思います。
あ、後、Javaの拡張表記についてもですね。

演算と型

違う型の入り交じった演算の結果は型の大きい方に昇格されます。
優先順位は下記の通りです。

double > float > long > int

代入式の場合、下記のような点に注意。

int x = 8, y = 7;

double ave = (x + y) / 2; //ave = 7.0

代入は最後に評価されるので↑これだと右辺(=より後ろ)は
int型のみなので小数点以下は切り捨てられ右辺の結果はint型の7となり、
代入する際にdouble型に昇格され7.0という結果になってしまいます。

double ave = (x + y) / 2.0; //ave =7.5

このように右辺もdouble型になるようにする。
その際には演算の優先順位にも注意。
キャスト演算子
(型)式 式の値を型に変換した値で生成

式の結果が指定した型になるだけで、使われてる変数の中身の型は変わらないです。
さっきの平均を求める代入式をこのキャスト演算子を使って表記したのが下記です。

double ave = (double)(x + y) / 2; //ave = 7.5

整数型や浮動小数点型からboolean型へなど互換のないものはキャストできませんのでご注意下さい。
ちなみにキャスト演算子を使って値を変換する事をキャストすると言います。

縮小変換

演算の結果が型の大きい方に昇格される事を拡大変換というのですが、
逆にdouble型からint型への変換など型が小さい方へ変換する事を縮小変換と言います。
縮小変換は値が納まらないことがある事からキャスト演算子でのキャストが必須です。
また小さい型へキャストするので値の大きさや精度を失うことがあります。
なお、拡大変換についても精度を失う事はあります。


一部例外として整数型の定数を使った代入式は、
型に納まる範囲でしたらキャストしなくてもOKとなります。


浮動小数点型については定数を使った代入式でもキャストは必須で、
3.14f や (float)3,14 のように表記しないとエラーとなります。

繰返しの制御

for文などの判定に使用する変数に浮動小数点型を使用することは可能ですが、
誤差がでて正確に判定することが出来ないので整数型を使用すること。


for文などで順番に浮動小数点型を加算したい場合などには、
(float)i / 1000 などのように表記すれば可能となる。

拡張表記

拡張表記 意味 Unicode拡張表記
\b BackSpace \u0008
\f 改ページ \u000c
\n 改行 \u000a
\r 行頭へ \u000d
\t 水平タブ \u0009
\" 文字" \u0022
\' 文字' \u0027
\\ 文字\ \u005C
\ooo 8進数でoooの値の文字
\uhhhh 16進数でhhhhの値の文字

\はWindowsでは¥、Linux系やUnix系では\です。


\f ・・・ プリンタへの出力においての改ページでPC上では意味をなしません。
\" ・・・ 文字リテラルである'と'の間では\は省略可。
\' ・・・ 文字列リテラルである"と"の間では\は省略可。


以上となります。


あー、まとめて簡潔に書くのって難しいですねー。
できてるのかどうかは別としてw
次は後で思い出す時に役立つ感じで書いてみたいと思います。