リテラル
今回はリテラルについてみていきます。phpなど何年もプログラミングしていますが「リテラル」っていう言葉自体、頭からすっかり忘れていました。「リテラル」という言葉は知らなくても、リテラルをしっかり意識しないと思わぬバグがあったりコーディング自体できないので今回はしっかり復習していこうと思います。
リテラルとは
「Wikipedia」から引用します。
コンピュータプログラミングにおいてリテラルは、ソースコード内に値を直接表記したものをいう。数値、文字列、関数などさまざまな型のものが存在し、それぞれの表記方法も言語によって異なる。
リテラルを記述できることは、第一級オブジェクトを構成するための要件として見なされる場合もある。
テキストエディタには、リテラルとその他のコードを区別しやすいように、シンタックスハイライトを実装したものもある。
なんか難しいことのように書かれていますが、簡単に言えば「ちゃんと数値や文字などの値として認識してくれるにはどう書けばいいのか」。表記方法って書かれているのでそんな感じですね。ソースコードには変数や関数、構文などが記述されています。そこに「abc」とだけ書かれていて何も規則がなかったらこの「abc」は変数? 文字列? とわからなくなります。文字列と認識してほしければ文字列と認識させる書き方があります。これが文字列リテラルです。このように数値の表記方法は? 文字の表示方法は? などいくつかのリテラルがあります。
整数リテラル
ソースコードで整数として認識させたければどう書けばいいのか?
整数はそのままです。「 123 , -567 」などのようにそのまま記述するだけで整数として認識してくれます。しかしこれは10進数での表記です。プログラムによっては8進数や16進数で整数を扱いたいときもあります。8進数や16進数は次の表のような決まりがあります。整数リテラルも変数と同様に型をもっておりデフォルトは「int型」です。long型にしたい場合は語尾に「l または L」をつけます。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 10進数 | そのまま記述 | 123 , -123 |
| 8進数 | 0ではじめる | 012 , 056 |
| 16進数 | 0xではじめる | 0x1234 , 0xab12 |
| long型 | l (L)で終わる | 123l, -123L |
浮動小数点リテラル
ソースコードで実数として認識させたければどう書けばいいのか?
基本はそのまま記述すればいいです。指数を用いることもあり、指数表記は「e + 乗数」になります。浮動小数点リテラルも変数と同様に型をもっておりデフォルトは「double型」です。float型にしたい場合は語尾に「f または F」をつけます。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 10進数 | そのまま記述 | 1.23 , 5.678 |
| 指数表記 | e + 乗数 | 1.25e-5 (1.25×10-5 のこと) |
| float型 | f (F)で終わる | 1.23f, -5.678F |
文字リテラル
ソースコードで文字として認識させたければどう書けばいいのか?
文字はそのまま記述することができません。「a」と記述しただけでは文字なのか変数なのかわからなくなります。そこで文字と認識させるためにシングルクォーテーションで囲みます。文字は「1文字」、複数の文字の集まりは「文字列」で区別されます。またJAVAでは「漢」などのマルチバイト文字でも1文字はきちんと1文字として扱われます。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 文字 | シングルクォーテーションで囲む | 'a' , '漢' |
文字列リテラル
ソースコードで文字列として認識させたければどう書けばいいのか?
文字リテラルと同様にそのまま記述はできません。「abc」と記述しただけでは文字なのか変数なのかわからなくなります。そこで文字列と認識させるためにダブルクォーテーションで囲みます。リテラルも変数と同様に型をもち、文字リテラルは文字コードを格納するchar型、文字列リテラルはオブジェクト型(String型)で管理が全く違います。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 文字 | ダブルクォーテーションで囲む | 'abc' , '漢字' |
論理型リテラル
真偽として認識させたければどう書けばいいのか?
真は「true」、偽は「false」と記述します。true と false はそのまま記述できます。この2語は予約語で変数名として使えないのかと思ったらきちんと定義できました。では変数名か論理型リテラルかわからなくならないのかと試しにコード書いて確かめたら変数の値が無視されました。変数名「true」で値を「10」格納させてprintlnで出力させたら「true」と表示されました。変数に格納はできるが出力できない現象が発生します。いっそうのこと「ture」と「false」も予約語にして変数として定義できないようにしてもらいたいです。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 真 | true と記述 | true |
| 偽 | false と記述 | false |
空リテラル
空として認識させたければどう書けばいいのか?
「null」とそのまま記述するだけです。この「null」は予約語登録されているので変数名としては使えません。なので「null」とソースコードにあれば必ず空リテラルのことです。nullと空文字の違いは「はてな」さんを参考にしてください。
| 種類 | 表記方法 | 例 |
|---|---|---|
| 空 | null と記述 | null |
以上で今回はリテラルについてみていきました。プログラミングするうえでの重要な規約なのでかなり重要ですね。プログラム言語によってリテラルの内容は違うので、その言語の初心者にとってバグなど起こさないためにまずしっかり身につけないといけない内容です。
2010 年 2 月 7 日 日曜日 【 カテゴリー: Javaの基本 】
