TopPage > 演習課題 > 演習1-4

文字列処理

Javaには,文字列(String)という概念があります. String型を使うと,文字列に関するさまざまな処理ができます.

以下のプログラムでは,文字列の基本的な処理機能について説明します.

fileStringTest.java ダウンロードソースコードファイルを見る

文字列の宣言

以下のように,文字列(String)型に値を代入するには,代入文字を””(ダブルコーテーション)で囲います.

// 文字列の宣言,宣言とともに値を設定
String a = "Good ";
String b = "Morning!";

コマンドプロンプト(コンソール)への出力(print, println)

演習0で説明したとおり,文字列をコンソールに表示する方法です.

// System.out.printlnはコマンドプロンプト(コンソール)への出力
System.out.println("a=" + a);
System.out.println("b=" + b);

文字列の結合(+演算子)

文字列同士を結合するには,+記号を使います. (一方が数値などの場合は,数値を「文字列」にしてから結合します)

// 文字列は+で文字列同士を連結する
String c = a+b;
System.out.println("c=" + c);

文字列の比較(equals)

2つの文字列を比較をします.大文字・小文字を区別します.

よくあるミスに注意!
Javaでは,文字列同士の比較に==を使うことはできません.
// equals()で文字列の比較を行う
if (a.equals("good ")) {
  System.out.println("変数a の値は good です.");
} else {
  System.out.println("変数a の値は good ではありません.");
}
  • boolean String.equals([文字列])
    Stringの値と,[文字列]の値が等しければtrueを返します.
    値の比較には,大文字・小文字を区別します.

文字列の比較(equalsIgnoreCase)

2つの文字列を比較をします.大文字・小文字を区別しません

// equalsIgnoreCase()で大文字,小文字を無視した文字列の比較を行う
if (a.equalsIgnoreCase("good ")) {
  System.out.println("変数a の値は good です.");
} else {
  System.out.println("変数a の値は good ではありません.");
}
  • boolean String.equalsIgnoreCase([文字列])
    Stringの値と,[文字列]の値が等しければtrueを返します.
    値の比較には,大文字・小文字の違いを無視します.

全て小文字/大文字にする(toLowerCase, toUpperCase)

文字列の全英字を大文字または小文字に置換します.

//toLowerCase()で全て小文字に
System.out.println(c.toLowerCase());

//toUpperCase()で全て大文字に
System.out.println(c.toUpperCase());
  • String String.toLowerCase()
    Stringに格納されている英字について,全て小文字に変換した文字列を返します.
  • String String.toUpperCase()
    Stringに格納されている英字について,全て大文字に変換した文字列を返します.

文字列の長さ(length)

変数に格納されている文字列の長さ(文字数)を返します.

// length()で,文字列の長さを得る
int alen = a.length();
int blen = b.length();
System.out.println("文字列 a の長さは " + alen );
System.out.println("文字列 b の長さは " + blen );
System.out.println("文字列 c の長さは " + c.length());  // このように書くこともできます
  • int String.length()
    Stringに格納されている文字列の長さを返します.
    戻り値はint型です.

部分文字列を取り出す(substring)

文字列から,指定した領域の文字列を取り出します.

// substring(開始位置,終了位置)で,部分文字列を取り出します.
// 終了位置を指定しないと,開始位置から末尾まで取り出します.
String e = c.substring(2,4);      // "od"が出力される.
System.out.println(e);
String f = c.substring(5);        // "Morning!"が出力される.
System.out.println(f);

文字列の意味.key.png
図1−4 文字列は開始位置の考え方 

  • String String.substring([開始位置])
  • String String.substring([開始位置],[終了位置])
    String文字列の指定した範囲の部分文字列を返します.
    [終了位置]を省略すると,文字列の末尾までの部分文字列を返します.

注意:
[終了位置]は,実際に部分文字列の末尾要素より1つ大きい値を指定します. すなわち,部分文字列の長さは,[終了位置] - [開始位置] になります.

例)

String text = "ABCDEFG";
text.substring(2, 5);  // "CDE" が取り出される(3文字)
text.substring(4, 5);  // "E" が取り出される(1文字)
text.substring(5, 5);  // "" 何も取り出されない(0文字)
text.substring(5, 3);  // エラー (-2文字になるため)

練習

Javaでは,==を使って文字列同士の比較をすることはできず,equals()を使う必要があると述べました. 本当にそうでしょうか?確認してみてください.

例)

System.out.println ("確認1:"+ (a == "Good ") );

String foo= "the Good Event";
String subfoo = foo.substring(4,9);
System.out.println ("|"+ subfoo +"|");
System.out.println ("確認2(==の場合):"+ (a == subfoo) );
System.out.println ("確認2(equalsの場合):"+ (a.equals(subfoo)) );

確認1は,aとまったく同じ文字列と比較させています.
確認2では,"the Good Event"という文字列から,部分文字列として"Good "を取り出して比較させています.

このように,条件によっては==で文字列が正しく比較できない場合があります.

 

next.gif 次の演習(1-5)


添付ファイル: file文字列の意味.key.png 282件 [詳細] fileStringTest.java 1396件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新     最終更新のRSS
Last-modified: 2017-10-20 (金) 10:34:15 (2374d)