charとStringの違いとは?データ型や変換方法もプログラマーがわかりやすく解説
ライター/woinary
某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。
charとstringの違いは?
image by iStockphoto
プログラミングしているとよく出てくるのが「変数」。何かの値をしまう箱と説明されます。この箱の中には数値や文字など格納することが可能です。charやStringは文字を格納する場合に関係します。
charとStringのざっくりとした違いは、変数に格納できる文字の長さ。charは1文字だけ、Stringは1文字以上の複数の文字の並びを格納できます。
char:特定の1文字
charの変数には1文字だけ格納することができます。例えば「A」や「$」です。1文字だけなので「ABC」を格納しようとするとエラーになります。charには「1」や「9」などの数字も格納できます。ただ、これは文字としての「1」や「9」であり、数値とは別の扱いになるので注意が必要です。
String:文字の集まった文字列
1文字だけしか格納できないと困るので文字の並び、文字列を格納できる変数が必要ですよね。それがStringです。Stringの変数には「ABC」や「あいうえお」といった1文字以上の文字列を格納できます。1文字以上なので「A」などの1文字だけでも構いません。
以上の説明を見ると、そもそもStringだけあればcharは不要と感じませんか?実は昔のプログラミング言語にはcharしかないものが普通でした。1文字しか格納できないcharだけでどうしていたのか、Stringがなぜできたのかは、次の節で説明します。
データ型とは?文字型と文字列型の差異の基本
image by iStockphoto
人間にとっては同じ「1」でも数値の「1」と文字の「1」は違うと説明しました。では、どうして区別できるのでしょう。実は変数には何を格納できるかが決まっています。これが変数の「データ型」、略して「型」と呼ばれるものです。charやStringも型の1つ。他には整数のintなどがあります。
ただし、プログラミング言語によって型があるものとないものがあります。C言語やC++、C#、Javaは型があるプログラミング言語。PythonやJavaScriptは型がないプログラミング言語です。型がないと言っても表に出てこないだけで、コンピュータの中では数値か文字かを区別できるようになっています。
こちらの記事もおすすめ
Python2とPython3の違いとは?Pythonの歴史や共存・切り替えもプログラマーがわかりやすく解説
文字型は1文字
charは文字型と呼ばれています。最初にざっくり説明した通り、ここには1文字だけ格納することが可能です。また、ひらがなや漢字などの日本語の「あ」や「漢」の扱いはプログラミング言語によって違うので注意してください。最近のプログラミング言語では日本語も文字として扱うことができるものもありますが、古いものでは扱えないものもあります。
文字列型は1文字以上の並び
Stringは文字列型と呼ばれます。その名の通り「文字の列」なので、複数の文字を並べたものを格納可能です。もちろん、1文字だけでもOK。
ただ、プログラミングしているときに1文字だけ扱いたいということは少ないです。Stringには1文字だけ格納することも可能なので、charってあまり意味がないように感じませんか。実は昔のプログラミング言語ではcharしかないものが普通。それでは不便なので文字列型が用意されました。そして今ではStringだけでcharがない言語もあります。C++、C#、Javaといった両方ある言語はその過渡期のプログラミング言語なのです。
文字型の配列と文字列型の違い
Stringがないプログラミング言語では1文字以上の文字列をどう扱うのでしょう。変数には値が1つしか入らない通常の変数の他に、複数の値を格納する配列変数があります。通常の変数は1戸建て、配列変数はマンションのような集合住宅みたいなものです。StringのないC言語ではcharの配列変数で文字列を格納します。
それならば他の言語でもcharの配列変数を使えば文字列変数は不要と考えるかもしれません。実は配列変数にはいくつか制限があります。例えば、配列の大きさは最初に定義したサイズから変更できないことが多いです。一方、Stringではそういう制限はありません。最初から文字列を扱うために作ったStringの方が扱いやすいのは当然ですね。
文字列変数と文字列リテラル
プログラムの中では文字列はダブル・クォーテーション(”)で囲むことで表します。例えば”ABC”です。これを文字列リテラルと呼びます。英語ではliteralで「文字の」や「文字通りの」という意味です。例えば、「a = 1」であれば数値の1を変数に格納、「a = “1”」ならば文字列の1を変数に格納します。
文字の場合はダブル・クォーテーションではなくシングル・クォーテーション(’)を使うプログラミング言語が多いです。ただし、言語によって違うため確認するようにしてください。
\次のページで「言語別、文字と文字列の細かい違いと変換方法」を解説!/