こんにちは、現役SEの「とも」です。
今回は、変数の初期化や条件分岐でよく使われるリテラルについてです。
リテラルとは、ソースコード中に記載する文字列や数値といった値そのものです。
リテラルの種類としては以下があります。
- 整数
- 浮動小数点
- 文字
- 文字列
- 真偽値
整数リテラル
整数のリテラルは、以下のように書き方によってJavaが解釈するデータ型が異なります。
- 「1」の記載の場合は、int型として解釈されます。
- 「1Lまたは1l(小文字のL)」の記載の場合は、long型として解釈されます。
ソースで記載すると、以下のようになります。
int a = 1; // int型で解釈される
long b = 1L; // long型として解釈される
long c = 1l; // long型として解釈される
大きな桁数で見やすくする場合
整数リテラルの場合、大きい数値を表す時に桁数が分かりにくくなるので、桁数を見やすくしたい場合があります。
その場合、以下のように、「_」を使った記載ができます。
int a = 1_234_567_890;
- 実際に変数に格納される際は「_」部分は除外して代入されますので、見た目以外の影響はありません。
2進数、8進数、16進数での表現
整数リテラルでは、10進数以外でも2進数、8進数、16進数で表現することができます。
- 2進数は、先頭に「0b」を付けた後に、2進数の数値表現を記載します。
- 8進数は、先頭に「0」を付けた後に、8進数の数値表現を記載します。
- 16進数は、先頭に「0x」を付けた後に、16進数の数値表現を記載します。
ソースで記載すると、以下のようになります。
int a = "0b1010"; // 2進数で表現(10の値がaに入る)
int b = "012"; // 8進数で表現(10の値がaに入る)
int c = "0xa"; // 16進数で表現(10の値がaに入る)
浮動小数点リテラル
浮動小数点のリテラルは、以下のように書き方によってJavaが解釈するデータ型が異なります。
- 「1.0」の記載の場合は、double型として解釈されます。
- 「1.0Fまたは1.0f」の記載の場合は、float型として解釈されます。
ソースで記載すると、以下のようになります。
double a = 1.0; // double型で解釈される
float b = 1.0F; // float型として解釈される
float c = 1.0f; // float型として解釈される
浮動小数点型リテラルでも「_」の表記で見やすくできます。
double a = 123_456.789_012_3;
文字リテラルと文字列リテラル
文字のリテラルは、以下のようにシングルクォーテーション(’)で囲って表現することで1文字のchar型として解釈されます。
char c = 'あ'; // char型として解釈される
文字列のリテラルは、以下のようにダブルクォーテーション(”)で囲って表現することで文字列として解釈されます。
String str = "あいうえお"; // String型として解釈される
エスケープシーケンス
改行やタブなどの文字として現れないものや、Javaが特殊な解釈をする予約文字を表現する表記を、「エスケープシーケンス」と言います。
良く使うエスケープシーケンスには、以下のようなものがあります。
エスケープシーケンス | 表現する文字 |
---|---|
\t | タブ |
\r | CR:キャリッジリターン(改行と組み合わせて使う「例:\r\n」) |
\n | 改行 |
\\ | 「\」を文字として表示 |
\” | 「”」を文字として表示 |
\’ | 「’」を文字として表示 |
エスケープシーケンスは2文字を入力することになりますが、実際には文字コードに変換されて1文字の扱いになるため、char型にも設定できます。
char c = '\n'; // 改行コードを設定
文字コードでの設定
ほぼ使うことはないと思いますが、文字リテラルや文字列リテラルでは、文字コードでの設定をすることもできます。
char a = '\u3042'; // 「あ」の文字コード
String str = "\u3042\u3044"; // 「あい」の文字列
真偽値リテラル
真偽値のリテラルは、boolean型のリテラルの記載方法です。
以下のようにダブルクォーテーションで囲まない「true」または「false」の文字で記載します。
boolean a = true; // 真の意味
boolean a = false; // 偽の意味
以上が、リテラルの説明でした。