最初に
初めまして、現在就職活動中兼javaを学習しています。kosukeと申します。
qiitaでは、学習中にアウトプットしておきたい内容を備忘録として残すために投稿させて頂きます。
マークダウン記法もよく理解できていないため、見づらかったらすみません。。。(これから改善していきます。)
また、誤った点がありましたら、コメントにてご指摘いただけると幸いです。
目次
・代入する際のルール
・型を無視した場合
・エラーを出さず、強制的に代入させる
・型の大小関係の説明
代入する際のルール
javaで変数を宣言する際は、
( 型 ) ( 変数名 ) = ( 値 );
の順番で宣言するルールがあるため、
int num = 3;
のような記述になります。
始めにアウトプットも兼ねて上記のコードを説明すると、
intというのは整数が代入されるという意味の型を指しています。
そのため、変数numには整数の値が代入されなければいけません。
型を無視した場合
例えば、
int num = 5.0;
のようなコードはコンパイルエラーになります。
こちらの理由は、int型を指定しているにも関わらず、double型の値を代入しているためです。
整数の型と小数の型には大小関係があり、それに従わないとエラーになるのです。
※型の大小関係は下の内容で説明しています。
エラーを出さず、強制的に代入させる
上記コードの改善点は、
double型の5.0という値をint型に変換することで解決する事が出来ます。
int num = (int)5.0;
このように変数名の前に記述されている型を指定する事で、5.0が整数5に変換されnumに代入されます。(強制的な型変換を指示する演算子をキャスト演算子と言います。)
しかし、こちらの変換方法は一見便利なように見えますが、デメリットもあります。
変換して小数5.0が整数5になりましたが、小数点以下が捨てられ情報の欠如が発生します。
これによりデータの欠損にも繋がるため、よほどの理由がない限りキャスト演算子は使用されないようです。
型の大小関係の説明
< 大小関係(byte型が最小でdouble型が最大となります) >
1:byte(最小)
2:short
3:int
4:long
5:float
6:double(最大)
byte・shortはそれほど利用頻度が高くないみたいなので、整数の値を扱う時はint型を指定するという解釈をしています。
しかし、long型の場合、扱う数値が大きいかつ値の末尾にLやlが付いている特徴があります。
float・doubleは小数点の値を代入する際用いられる型になります。
こちらも、小数を扱う場合大体doubleを指定するそうですが、float型の場合は、値の末尾にFかfが付いています。
私がこちらの大小関係を理解する際に用いた考え方が、
< 型を箱と考える >
byte型が一番小さい箱で型が大きくなるにつれて箱が大きくなっていくイメージです。
先ほどの誤ったコードを例にすると、
int num = 5.0;
intという箱にdouble型は大きすぎて入りません。。。
なので、こちらのコードはエラーになるのです。
しかしこちらのコードは、
double num = 3;
doubleという大きい箱にint型は入れる事が可能です。
(int型の方がdouble型よりも大小関係が小さいため)
こちらの考え方で学習するとコードのミスを減らす事が出来ました。
参考テキスト:スッキリわかるjava入門
終わりに
最後まで読んで頂き有り難うございました。
初めてのqiita投稿という事で、勝手が分からず読みにくいと感じられた方。申し訳ないです。。。
今後も投稿を続けていくので、書き方は都度改善していきます。