▲ | ▼ | 目次 | KnowHowTop |
ここでは Java の基礎知識として Java で使用できるリテラルについての解説をします。
リテラルとは、変数の初期化や、計算使用する値など、データそのものをさします。
リテラルには、「数値リテラル」、「文字リテラル」、「boolean リテラル」、「文字列リテラル」があります。
数値リテラルには、整数の値を表す整数リテラルと少数の値を表す小数リテラルがあります。
整数リテラルは、byte , short , int , long 型で使用し、小数リテラルは float , double 型で使用します。
数値リテラルは、10 進表現、16 進表現、8 進表現で値を指定することが可能です。
10 進数以外をリテラルに使用する場合は、それを識別する文字をつけます。
指定方法 | 書き方 | 例 |
---|---|---|
10 進表現 | そのまま書く | int i = 255 ; |
16 進表現 | 数値の前に「0x」をつける | int i = 0xEF ; |
8 進表現 | 数値の前に「0」をつける | int i = 0377 ; |
例の値はすべて 255 を表しています。
小数リテラルは、10 進表現、指数表現で値を指定することが可能です。
指定方法 | 書き方 | 例 |
---|---|---|
10 進表現 | そのまま書く | double d = 0.0025 ; |
指数表現 | 10 の○○乗で表現する( E または e) | double d = 2.50E-3 ; |
例の値はすべて 0.0025 を表しています。
数値リテラルのうち整数はデフォルトで int 型として、小数はデフォルトで double 型として扱われます。
したがって明示的に型を指定したい場合は、型をあらわす識別をつける必要があります。
データ型 | 書き方 | 例 |
---|---|---|
long | 数値の後ろに「L または l 」をつける | long l = 255L; |
float | 数値の後ろに「F または f 」をつける | float f = 1.25F; |
例の値はすべて 0.0025 を表しています。
Java コンパイラでは、数値リテラルの型はデフォルトで、「整数が int」、「小数が double」になり、代入先の型がデフォルトの型より精度が低い場合には代入は可能ですが、代入先が表現できる範囲の値である必要があり、注意が必要です。
データ型 | リテラルに指定できる値 |
---|---|
byte | 型が表現できる範囲の数値であれば代入可能 範囲を超える場合はコンパイルエラー 少数リテラルはコンパイルエラー |
short | |
int | |
long | int 型の範囲であれば代入可能 int 範囲を超える場合は long であることを明示(最後に「L」or「l」を付ける) |
float | 整数リテラルは int の範囲であれば代入可能(精度が落ちる) 小数数リテラルの場合 float であることを明示(最後に「F」or「f」を付ける) |
double | 型が表現できる範囲の数値であれば代入可能 整数リテラルは int の範囲であれば代入可能(精度が落ちる) int 範囲を超える場合は double であることを明示(最後に「D」or「d」を付ける) |
文字リテラルとは、1 文字の表現するためのリテラルで、char 型で使用します。
一般的に半角文字は 8 ビットの ASCII 文字を使用していますが、Java では文字に 16 ビットの Unicode を使用しています。
文字リテラルは、文字をシングルクォーテーション「 ’」で囲むことで表現します。
また、「Unicode」、「数値」、「エスケープシーケンス(後述)」を指定することも可能です。
指定方法 | 書き方 | 例 |
---|---|---|
文字 | 「 '」で囲む | char c = 'A'; |
Unicode | 16 進の Unicord の前に「\u」をつけて「'」で囲む | char c = '\u0041'; |
数値 | 16 進の Unicode を10進に変換した数値 | char c = 65; |
例の値はすべて ”A” を表しています。
文字列リテラルとは、複数の文字のまとまり(文字列)を表現するためのリテラルです。
Java では、文字列を取り扱う基本データ型はなく、String クラスより生成されたオブジェクト(参照データ型)を使用します。
文字列リテラルは、文字列をダブルクォーテーション「 ”」で囲むことで表現します。
文字列リテラルには、文字リテラル同様「Unicode」、「エスケープシーケンス(後述)」を指定することもできます。
また、「+」演算子を使用して文字列を結合することもできます。
指定方法 | 書き方 | 例 |
---|---|---|
文字列 | 「 "」で囲む | String st = "ABC"; |
Unicode | Unicord を「 "」で囲む | String st = "\u0041BC"; |
結合 | 2 つの文字列を「+」でつなぐ | String st = "\u0041" + "B" + "C"; |
例の値はすべて ”ABC” を表しています。
エスケープシーケンスとは、文字リテラルや文字列リテラルで、バックスペースや水平タブなどのソースに直接記述できない文字を記述するための方法で、「\」を先頭に付けます。
エスケープシーケンスは文字リテラルとしても、文字列リテラルとしても使用することができます。
先の文字リテラルで登場したUnicodeの指定に使う「\u」もエスケープシーケンスです。
エスケープシーケンス | 意味 |
---|---|
\b | バックスペース |
\t | 水平タブ |
\n | 改行 |
\f | 用紙送り |
\r | キャリッジリターン |
\" | ダブルクォーテーション(二重引用符) |
\' | シングルクォーテーション(単一引用符) |
\/ | バックスラッシュ |
\xxx | 8 進数文字表記(xxx は 8 進数) |
\uxxx | Unicode 表記(xxxx は 16 進数) |
boolean リテラルとは、基本データ型の boolean に格納できる唯一の値です。
boolean は真(true)と偽(false)の 2 種類しか表現することができず、この真偽をあらわします。
boolean リテラルは、真、偽をそれぞれ「true」、「false」で表現します。
このリテラル値は Java の予約語となっており、大文字(TRUE)で書いたり、ダブルクォーテーションで囲んだり(”false”)することは許されません。
指定方法 | 書き方 | 例 |
---|---|---|
真 | true | boolean b = true; |
偽 | false | boolean b = false; |
null は参照データ型に対して、オブジェクトが値を持たない(参照値を持たない)ことを示す特別なリテラルです。
null リテラルは、一般的な代入の他、比較演算子による比較に使用することができます。
ここで注意したいのは String において null と ”” (空文字)は似て非なるものであるということです。
null とはオブジェクトの実態がない状態なので、null オブジェクトはメモリをほとんど消費しませが、 ”” の場合オブジェクトの実態は存在していますので、それなりにメモリを消費します。
基本データ型で null を扱うことはできません。