リテラルと変数の型

リテラル

プログラムのソースコード中に直に書かれる定数のことをリテラルといいます。「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 );
       } 
}

数字の並びはintかdouble

javaは、ただの数字のならびは int 、小数部分があると double として扱います。

小数点のない数字の並びは int

12 → int -356 → int 2147483647 → int 2147483648 → エラー(intの最大値を超える)

小数点のある数字の並びは double

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 を使う

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;

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

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

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

問題

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

No. 問題 変数の型 リテラルの型 型が合っているか 代入できるか
例1 int a = 1; intint
例2 int a = 123d; intdouble××
(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) .........
もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified