翻訳元: Java 文字列に関する質問トップ 10
簡単に言えば、「==」は 2 つの文字列の参照が同じかどうかをテストし、equals() は 2 つの文字列の値が同じかどうかをテストします。 2 つの文字列が同じオブジェクトであるかどうかを確認する場合を除き、equals() を使用することをお勧めします。
文字列の永続化メカニズムを知っておくとよいでしょう。
文字列は不変です。つまり、文字列は一度作成されると、ガベージ コレクターによってクリーンアップされるまでそこに残ります。配列を使用すると、その要素を明示的に変更できます。こうすることで、セキュリティ上の機密情報 (パスワードなど) がシステム上の他の場所に表示されなくなります。
Java7 の場合、答えは「はい」です。 JDK7 以降、switch ステートメントの条件として String を使用できるようになりました。 JDK6 より前では、switch ステートメントの条件として String を使用できませんでした。
// Java 7 のみ!switch (str.toLowerCase()) { case "a": value = 1; case "b": value = 2;
int n = Integer.parseInt("10");
簡単に言えば、非常に頻繁に使用されるため、無視されることがあります。
正規表現を使用するだけで分解できます。 「/s」は、「」、「/t」、「/r」、「/n」などの空白文字を表します。
String[] strArray = aString.split("//s+");
JDK6 では、substring() メソッドは既存の文字列を表す文字配列へのウィンドウを提供しますが、新しい文字列は作成しません。新しい文字配列で表される新しい文字列を作成するには、次のように空の文字列を追加します。
str.substring(m, n) + ""
これにより、新しい文字列を表す完全に新しい文字配列が作成されます。上記のアプローチでは、ガベージ コレクターが未使用の大きな文字列を収集し、部分文字列のみを保持するため、コードが高速になる場合があります。
Oracle JDK 7 では、substring() は既存の配列を使用せずに新しい文字配列を作成します。 「JDK 6 および JDK 7 の substring() メソッド」の図は、JDK 6 と JDK 7 の substring() の違いを示しています。
String と StringBuilder: StringBuilder は変更可能です。つまり、作成後に値を変更できます。
StringBuilder と StringBuffer: StringBuffer は同期型です。つまり、スレッド セーフですが、StringBuilder よりも低速です。
Python では、文字列に数値を乗算することで文字列を繰り返すことができます。 Java では、Apache Commons Lang パッケージの StringUtils クラスのrepeat() メソッドを通じて文字列を繰り返すことができます。
String str = "abcd";繰り返される文字列 = StringUtils.repeat(str,3);//abcdabcdabcd
String str = "Sep 17, 2013";Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);System.out.println(date);//9 月 17 日火曜日 00:00 :00 EDT 2013
Apache Commons Lang パッケージの StringUtils クラスを使用します。
int n = StringUtils.countMatches("11112222", "1");System.out.println(n);
追加の質問: 文字列に大文字のみが含まれていることを検出する方法
翻訳元: Java 文字列に関する質問トップ 10