[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座一学期単位2 →1時間目

1時間目 リテラルと文字コード

 プログラムソースには、リテラルという値と文字を識別する文字コードを理解する必要 があります。

2−1−1.リテラルとは

 リテラルとは、ソース中に値を直接記述したもののことです。

 ソース中の「"HelloWorld"」や「1024」などがリテラルです。
「"HelloWorld"」が文字列リテラル、「1024」が数値(整数)リテラルと呼びます。
それ以外にも文字リテラル、数値(浮動小数点数)リテラル、booleanリテラルなどがあります。
それぞれの書き方は次の通りです。
文字                    'A'
文字列                  "ABCD"
数値(整数)            1024
数値(浮動小数点数)    0.123   1.234E-4
boolean                 true    false
 書き方がそれぞれ違うことに気付きましたか。
文字の場合は「'」(シングルクォーテーション)で囲み、文字列の場合は「"」(ダブルクォーテーション) で囲みます。
よって「"A"」は文字列リテラルとなり、「'ABCD'」はコンパイルエラーになります。
「a」と書いた場合は、後述する変数として認識します(単位2 2時間目 変数を参照)。
booleanリテラルは、boolean型の値として記述しますが、booleanの詳細は単位2 3時 間目 型と式・演算子で習います。

2−1−2.x進数について

 普段私たちが使っている数値は、10進数と呼ばれる表記です。
数字が1〜9と0の10通りで表すのが10進数です。
Javaでは、8進数と16進数もソース中に表す事ができます。
8進数は、数字の1〜7と0の8通りです。
16進数は、1〜9と0にA〜F(大文字小文字は区別しない)の16通りの表し方になります。
ソース中では10進数と区別するためにx進数ごとに書き方があります。
10          10進数の10です。
012         8進数の10です。
0x10        16進数の16です。

 Javaで一意に数字で表現できるのは、16進数でF(10進数で15)が最大です。
では、なぜ2進数、8進数、16進数が使えるようにしたのでしょうか?次の表を見てみると何か気づくかもしれま せん。
10進数 2進数 8進数 16進数
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 10 4
5 0101 11 5
6 0110 12 6
7 0111 13 7
8 1000 20 8
9 1001 21 9
10 1010 22 A
11 1011 23 B
12 1100 30 C
13 1101 31 D
14 1110 32 E
15 1111 33 F

 10進数は、私たちがふんだん使用している数字で、2進数はコンピュータが理解する数字です。
2進数は理解するにも記述するにも大変ですよね。
8進数や16進数はそんな大変で面倒な書き方を省略するために用意されました。
8進数と2進数の関係は、8進数の桁が変わると2進数は3桁目の桁が変わり、3桁ずつ区切りると8進数と切りが良 いために使用されます。
2進数は、通常は4桁区切りで使用します。
4桁ごとに桁が変わる16進数はまさに2進数の代わりに使用するには打って付です。
例えば、2進数の「1111 1111」は、16進数で「FF」と表してコンピュータだけではなく、私たちにも書きやすく 2進数よりは、見やすくなったと思います。

2−1−3.エスケープシーケンスを使って特殊な値を使おう

 Javaのソース中に、コンパイラが識別できるようにいろいろと工夫されています。
文字列リテラルの場合のような「"」(ダブルクォーテーション)などです。
これらを文字リテラルや文字列リテラル中に表示する場合は、コンパイラが混乱してしまう事が想像できるで しょう。
そのため、Javaでは、「\」を付ける事により区別しています。
また、特殊な文字も「\」を付ける事により表す事ができ、全て1文字分として識別します。

表記 説明
\b バックスペース
\t 水平タブ
\n 改行
\f 改ページ
\r 復帰
\' '
\" "
\\ \
\ooo 8進数の文字コードで表す文字
\uhhhh 16進数の文字コードで表す文字

oooは、8進数を表す数値でhhhhは、16進数を表す数値。

2−1−4.文字コード

 Javaでは、文字を表す場合はUnicode(ユニコード)で表します。
数字も数値としてコードとして扱われこのようなコードを文字コードといいます。
文字コードには、他にもASCII、Shift_JISやEUC-JPという文字コードがあり、それぞれ割り振られたコードがあ ります。
例えばASCIIでは「'\u0041'」は「'A'」のように決められていますが、文字を表すコードはその文字コードによ って表せる数と表し方が違います。
ASCIIは、127個で1文字7ビットです。
Javaで使うUnicodeは、すべての文字を2バイトで表しています。
参考までにASCIIの文字コード表を載せて置きます。
Unicodeは紙面上の都合載せませんが、ASCIIは昔から有る文字コードでもあり、量が少ないため文字コードを理解す るには打って付けです。

  0 1 2 3 4 5 6 7
0 NUL TC7 SP 0 @ P ` p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAC % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g w
8 BS CAN ( 8 H X h x
9 HT EM ) 9 I Y i y
A LF SUB * : J Z j z
B VT ESC + ; K [ k {
C FF FS , < L \ l |
D CR GS - = M ] m }
E SO RS . > N ^ n ~
F SI US / ? O _ o DEL

制御文字も文字コードとして表します。

2−1−5.サンプルプログラムで試してみよう

 以下にサンプルプログラムを示します。

Sample2_1_1.java
public class Sample2_1_1 {
    public static void main(String[] args) {
        new CharacterCode().view();
    }
}

class CharacterCode {
    public void view() {
        System.out.println("文字コードで" + '\u0041' + "を表す事ができます。");
        System.out.println("文字コードで" + '\u005C\u005C' + "を表す事ができます。");
    }
}
文字コードでAを表す事ができます。
文字コードで\を表す事ができます。

単位1 Javaとプログラミングに戻る     2時間目 変数に進む

単位2 ソースの基本に戻る

トップページに戻る