1. String 型を詳しく学ぶ
String 型は、Java でもっともよく使われる型の1つ(おそらく最も多用される型)です。テキストを変数に保存できるのはとても便利です。さらに、int や double と違って、String オブジェクトにはたくさんの関数(メソッド)があり、いろいろなことができます。
また、Java のすべてのオブジェクト(本当に全部)は String 型に変換できます。より正確に言えば、Java のあらゆるオブジェクトは自分のテキスト(文字列表現)を返せます。この型はとても有用でおもしろいので、今後も何度も登場しますが、今日はその基本を学びます。
String 型の変数を作成する
String 型は文字列(テキスト)を保存するための型です。テキストを保存できる変数をコードで作るには、次のように書きます。
String imya;
ここで imya は変数名です。
例:
| コマンド | 説明 |
|---|---|
|
文字列変数 name が作成される |
|
文字列変数 message が作成される |
|
文字列変数 text が作成される |
int や double と同様に、String 型の複数の変数をまとめて宣言する省略記法も使えます。
String imya1, imya2, imya3;
2. String 型変数への値の代入
String 型の変数に値を入れるには、次のように書きます。
imya = "値";
ここで最初の違いです。String 型の値はすべて文字列で、必ず二重引用符で囲みます。
例:
| コマンド | 注記 |
|---|---|
|
変数 name には Anya という文字列が含まれる |
|
変数 city には New York が含まれる |
|
変数 message には Hello! が含まれる |
3. String 型変数の初期化
int や double の場合と同じく、String 型の変数は作成時に同時に初期化できます。これは Java のすべての型で可能なので、これ以上は繰り返しません。
String imya1 = "値1", imya2 = "値2", imya3 = "値3";
String name = "Anya", city = "New York", message = "Hello!";
値が設定されている変数だけを変更できる
値を代入していない変数を宣言してそれを使おうとすると、Java コンパイラはエラーにします。
次のコードは動作しません:
String name;
System.out.println(name); // 変数 name は初期化されていません。プログラムはコンパイルされません。
int a;
a++; // 変数 a は初期化されていません。プログラムはコンパイルされません。
double x;
double y = x; // 変数 x は初期化されていません。プログラムはコンパイルされません。
4. 連結(コンカテネーション)— 文字列をつなげる
Java では文字列をつなげることができます。この操作はコンカテネーション(連結)と呼ばれます。しばしば「文字列の連結」や、単に「文字列の足し算」と呼ばれることもあります。
2 つの文字列を連結するには、+ 演算子を使います。とても簡単です。
"文字列1" + "文字列2"
例:
| コマンド | 注記 |
|---|---|
|
name には AnyaAnya が入る |
|
city には New YorkAnya が入る |
|
message には Hello! Anya が入る |
もちろん、複数の文字列を同時に連結したり、文字列と変数を一緒に連結することもできます。
String name = "Anya"; // name には文字列 Anya が入っている
String city = "New York"; // city には文字列 New York が入っている
String message = "Hello!" + city + name + city; // message には文字列 Hello!New YorkAnyaNew York が入っている
5. 空文字列
直前の例では、変数 message のテキストが読みにくいことが分かります。空白が足りないからです。空白を 1 つ(または複数)入れたい場合は、空白をそのまま書いて二重引用符で囲めば OK です。とても簡単です。
" "
ちなみに、引用符の間に何も書かない(ダブルクォーテーションを 2 個だけ書く)と、いわゆる「空文字列」になります。
""
存在はしているのに、画面に出力しても何も表示されません。ほかの文字列と連結しても何も変化しません。いわば、文字列における 0 のようなものです。
6. 文字列中の特殊文字のエスケープ
文字列は二重引用符で囲まれることは既に知っています。では、文字列の中に引用符を入れたいときはどうすればよいでしょうか。文字列の中にそのまま引用符を書いたら、コンパイラはそこで文字列の終わりだとみなしてしまわないでしょうか?
そのとおりです。そこで、文字列の中の引用符は \" の 2 文字で表します。コードは次のようになります。
String quote = "彼は言った: \"こんにちは!\"";
System.out.println(quote); // 彼は言った: "こんにちは!"
実はもう少しだけトリッキーです。文字 \ は、文字列の中では特殊(制御)文字として扱われます。これを使うと、改行やタブなどの「見えない文字」を表現できます。そして、文字 \ 自体を文字列に含めたいときは、2 回続けて書きます。
よく使う 4 つの組み合わせは次のとおりです。
| 表記 | 意味 |
|---|---|
| \n | 改行(newline) |
| \t | タブ(インデント) |
| \\ | \ そのもの |
| \" | 文字列中の二重引用符 |
例:
String multiline = "行1\n行2";
System.out.println(multiline);
出力:
行1
行2
7. String の主なメソッド
String 型には独自の関数(メソッド)が多数あり、開発者の作業を助けてくれます。今日はその中からいくつか(基本的なもの)を紹介します。例:
| メソッド | 説明 | 結果例 |
|---|---|---|
|
文字数(長さ) | |
|
大文字に変換 | |
|
小文字に変換 | |
|
両端の空白を削除 | |
文字列メソッドの使用例
これらのメソッドは次のように呼び出します。variable.function(...)
文字列の長さを求める:
String name = "Andrey";
int length = name.length();
System.out.println(length); // 6(6 文字)
大文字・小文字に変換:
String original = "hello";
System.out.println(original.toUpperCase()); // HELLO
System.out.println(original.toLowerCase()); // hello
両端の空白を取り除く(キーボード入力の処理でとても便利):
String messy = " hello ";
System.out.println(messy.trim()); // "hello"
これらのメソッドはそれぞれ新しい文字列を返し、元の文字列は変更されません。
GO TO FULL VERSION