[解決済み] Stringがあるのに、なぜStringBuilderなのか?
2023-04-24 19:21:34
疑問点
私はちょうど
StringBuilder
に初めて遭遇し、驚きました。Java にはすでに非常に強力な
String
クラスがあるからです。
なぜ2番目の
String
クラスがあるのでしょうか?
についてもっと知りたいのですが、どこで知ることができますか?
StringBuilder
?
どのように解決するのですか?
String
は追加を許しません。に対して呼び出す各メソッドは
String
に対して呼び出す各メソッドは新しいオブジェクトを生成してそれを返します。これは
String
は不変であり、内部の状態を変更することができないからです。
一方
StringBuilder
はミュータブルです。呼び出すときに
append(..)
を呼び出すと、新しい文字列オブジェクトを作るのではなく、内部の文字配列が変更されます。
したがって、それはより効率的に持つことができます。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 500; i ++) {
sb.append(i);
}
よりも
str += i
では500の新しい文字列オブジェクトが作成されます。
この例では、ループを使っていることに注意してください。heliosがコメントで指摘しているように、コンパイラは以下のような式を自動的に変換します。
String d = a + b + c
のような表現に自動的に変換します。
String d = new StringBuilder(a).append(b).append(c).toString();
また
StringBuffer
に加えて
StringBuilder
. 違いは、前者にはシンクロナイゼーションされたメソッドがあることです。ローカル変数として使用する場合は
StringBuilder
. もし、複数のスレッドからアクセスされる可能性がある場合は
StringBuffer
(を使います(これはもっと稀です)。
関連
-
強制型変換について
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Java の switch case 文で必要な定数式の問題の解決法
-
Javaジェネリックを1つの記事で
-
API の戻り値を処理するために ResponseEntity を使用する
-
Junitのユニットテストエラー
-
Java基礎 - マッピングとQ/A
-
htmlとwordの相互変換の実装(画像あり)
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み】C++でStringBuffer/StringBuilderに相当するものは?
-
[解決済み] JavaにおけるCharSequenceとStringの正確な違い [duplicate]