StringBuilder sbJSON = new StringBuilder();
StringBuilderクラスについて教えて頂きたいのですが
StringBuilderクラスは可変長の文字列を扱うクラスだと思うのですが
この可変長の文字列と通常の文字列の違いについて調べてみたところ
可変長文字列:とりあえず、自由に文字列を入れられる。
固定長文字列:決めた上限文字数までしか入れられない。
とあったのですが
StringBuilderクラスは
Stringクラスの拡張版みたいなものと捉えて良いのでしょうか?
No.1ベストアンサー
- 回答日時:
> StringBuilderクラスは可変長の文字列を扱うクラスだと思う
確かに StringBuilder は可変長の文字列を扱いますがそれは String も同じです。StringBuilder と String の違いは別のところにあります。
https://docs.oracle.com/javase/jp/8/docs/api/jav …
多分 Java ライブラリリファレンスの上記 URL 内の「文字の可変シーケンスです」という文から StringBuilder の特徴が可変長なことだと思われたのかもしれませんが、ここでいう「可変」は保持している内容を編集できるという意味です。
上記 URL のメソッド一覧を見れば delete・insert・replace といった内容編集に関するメソッドがあることに気付くと思われます。一方、String クラスでは変更を行っていそうなメソッドもその説明をよく読むと「……を返します」と書かれていて、そのクラスの保持している内容についてはクラスの説明の冒頭に「この値を作成したあとに変更はできません」と明記しています。
……え、でも String も以下のコードで内容を書き換えられるじゃないかって?
String s = "abc";
s += "def";
// ↑これで s の「内容」が "abc" から "abcdef" に書き換わった……?
残念ながらそれは違います。上記の代入演算子は以下の略記だという事を思い出してください。
s = s + "def";
このとき、まず s の内容と "def" を連結させたらどうなるかという結果を内容として持つ新たな String インスタンスが生成され、次にその新しいインスタンスへの参照を s に代入するという事が行われています。
つまり、参照型の参照先を見る方法があったならば、s の参照先は代入前と代入後とでは違ってきます。
一方、StringBuilder の append では参照先が変わることなく保持している内容が書き換わります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- WordPress(ワードプレス) Wordpressの記事URLを自由に決めたい 3 2022/06/02 12:05
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) セルの値 11 2022/06/29 11:00
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) エクセルの日付から年末尾2桁と月を1月をA~Lに変換したい 3 2022/08/08 10:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムの組み立てについて
-
Javaコレクションフレームワー...
-
インターフェースとは
-
インターフェースの利点は?
-
抽象クラスとインターフェース...
-
インタフェースのstatic変数(Java)
-
クラスは関数の寄せ集め??
-
オブジェクト指向 ボールの衝突
-
抽象クラスとインタフェースの...
-
WEBサイトを訪れたときの通知の...
-
System.Collections.Generic.Li...
-
エクセルVBAで、条件に一致する...
-
3年間同じクラスになる確率
-
インスタンス参照でアクセスで...
-
c++,ある関数のクラスから別の...
-
ワイルドカード<?>と型パラメー...
-
「天声人語」をインターネット...
-
DataGridViewでセルクリックイ...
-
string formatについて
-
クラス間でのデータ参照
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
(vba)他のアプリケーションの右...
-
抽象クラスをJUNITでテストする...
-
「ラッパークラス」の存在意義...
-
ASP.NETでの共通コードの書き方...
-
JTextFieldの入力制限
-
「継承されたメソッドの可視性...
-
C# 「データが失なわれる可能性...
-
VB DLLプロジェクトについて
-
c++でのヘッダーファイルの循環...
-
【C#】クラスのコンストラクタ...
-
「IOException は対応する try ...
-
ファイルパスが取得出来ない(P...
-
メソッドの引数にクラス名を渡す
-
ゲッターを使わないで変数にア...
-
Javaのインスタンス化の構文の...
-
オーバーライドとラッパーの違い
-
vb.net 自作プロパティの削除に...
-
なぜインタフェースを使うのか?
-
VBがオブジェクト指向言語でな...
おすすめ情報