プログラムのソースコード中に直に書かれる定数のことをリテラルといいます。「25」「hello」などの単なる数字や文字列はリテラルです。変数に代入しなくても、javaはこれを変数の型のうちからどれかを選んであてはめます。
public class En { public static void main( String[] args ) { double hankei; double pai; hankei = 4.5; pai = 3.14; System.out.print( "面積 = " ); System.out.println( hankei * hankei * pai ); } }
javaは、ただの数字のならびは int 、小数部分があると double として扱います。
12 → int -356 → int 2147483647 → int 2147483648 → エラー(intの最大値を超える)
12.0 → double -45.02 → double 2147483648.0→ double (.0があるのでdoubleの扱いをされるのでエラーにならない) 2.147483648e9 → double (2.147483648×109のこと。2147483648.0の科学技術的表現) 123e8 → double (123×108のこと。e があると小数点がなくてもdoubleの扱い。 'E'も可) 1.79769313486231570e309; → エラー(doubleの最大値を超える)
longやfloatの型として扱うようにするには数字の後ろに、LやF(小文字も可)を加えます。
12L → long -356L → long 2147483647L → long 2147483648L → long(longの最大値は超えない) 12F → float
"abcd" や "1234" など、" " (ダブルクオート)で囲まれていれば 文字列として扱います。
"Hellow" → 文字列 "こんにちは"→ 文字列 "123.4" → 文字列
ダブルクォートで囲まれた数字は数値としての意味が失われます。通常の足し算、引き算、かけ算やわり算はできなくなります。
逆に、英字などの数字でない文字列をダブルクオートなしで abcd などとすると変数名であるなどと扱われ、多くはエラーになります。
また、'a' や '3' など、' ' (シングルクオート)で囲まれていれば char として扱います。これは1つの文字でなければなりません。
ダブルクォートのない true と false は boolean の扱いです。
'1' → char 'あ' → char true → boolean false → boolean "false" → 文字列
変数に値を代入するときには変数の型と一致させるのが原則です。
int kaisuu; kaisuu = 3; double hankei; hankei = 45.0; long ookii; ookii = 2147483648L
変数の型があわないときでも、int の値を long の変数に代入するとか、float の値を double の変数に代入するなどの、より大きな型に代入する場合は自動的に変数の型にあわせて代入してくれます。
long ookii; ookii = 3; double hankei; hankei = 45F;
逆にdoubleの型をfloatやintに代入することはできません。
× int seisuu; seisuu = 4.5; × float hankei; hankei = 4.5;
◎,○は代入可。×は不可。
代入する数値の型→ | int | long | float | double | |
---|---|---|---|---|---|
数値の例→ | 12 | 12L | 12F | 12D | |
変数の型 | int | ◎ | × | × | × |
long | ◎ | ◎ | × | × | |
float | ○ | ○ | ◎ | × | |
double | ◎ | ○ | ◎ | ◎ |
○の部分はエラー無く代入されますが、実は場合によっては精度が落ちる(ちょっとだけ不正確になる)こともあります。
次の表を完成させなさい。
No. | 問題 | 変数の型 | リテラルの型 | 型が合っているか | 代入できるか |
例1 | int a = 1; | int | int | ○ | ○ |
例2 | int a = 123d; | int | double | × | × |
(1) | int b = -1256; | ||||
(2) | int c = 2.0; | ||||
(3) | float d = 2.3; | ||||
(4) | float e = 33; | ||||
(5) | double f = 56e5; | ||||
(6) | double g = 78f; |
解答は toi01.txt という名前のファイルに、次のように書いて、java のフォルダに保存すること。
(1) double int × × (2) .........