変数への代入と型

変数へのリテラルの代入

変数に値を代入するときには型を合わせるのが原則です。これが、整数なら int 、小数点を含む計算をするなら double の変数を使う理由です。

int    kaisuu = 3;
double hankei = 45.0;
long   ookii  = 2147483648L;
String youbi  = "Sunday";

Stringは基本データ型ではありませんが、型が合わせなければ代入できないところは同じです。

型の違う代入

変数の型があわないときでも、int の値を long の変数に代入するとか、float の値を double の変数に代入するなどの、より大きな型に代入する場合は自動的に変数の型にあわせて代入してくれます。

○ double a = 12;
12 は int ですが、double に変換して代入します。
○ long b = 3;
3 は int ですが、long に変換して代入します。
× int c = 3.4;
3.4 は double です。int にすると小数点以下が失われますから、コンパイル時に「精度が落ちている可能性」というエラーになります。3.0 でも認めてもらえません。
× int d = 2147483648L;
int は 2147483647 までしか扱えませんから 2147483648L だとコンパイル時に「精度が落ちている可能性」というエラーになります。
× int e = 2L;
2ならば int で扱えるのですが、Lをつけて long 指定した数値なので、代入しようとするとコンパイル時に「精度が落ちている可能性」というエラーになります。

◎,○は代入可。×は不可。

代入する数値の型→ intlongfloatdouble
数値の例→ 1212L12F12D
変数の型int×××
long××
float×
double

○の部分はエラー無く代入されますが、実は場合によっては精度が落ちる(ちょっとだけ不正確になる)こともあります。

問題

次の表を完成させなさい。

No. 問題 変数の型 リテラルの型 型が合っているか 代入できるか
例1 int aa = 1; intint
例2 int ab = 123d; intdouble××
(1) int a1 = -1256;     
(2) int a2 = 2.0;     
(3) double a3 = 234;     
(4) double a4 = 3.456;     
(5) long a5 = 567;     
(6) long a6 = 78L;     
(7) String a7 = 123;     
(8) String a8 = "123";     
(9) int a9 = 0xabcd;     

解答は toi02.txt という名前のファイルに、次のように書いて、java のフォルダに保存すること。

(1) double    int    ×    ×
(2) .........

Javaプログラミング(Apr.2011)
聖愛中学高等学校
http://www.seiai.ed.jp/