string、stringbuffer、stringbuilder の違いは何ですか?
違い: String クラスは不変クラスです。String オブジェクトが作成されると、オブジェクトに含まれる文字シーケンスは、オブジェクトが破棄されるまで不変です。StringBuffer オブジェクトは変更可能な文字列オブジェクトを表し、Thread-安全; StringBuilder クラスは変更可能な文字列オブジェクトを表し、スレッドセーフではありません。
##String、StringBuffer、StringBuilder の違い:
String String クラスは不変クラスです。つまり、String オブジェクトが作成されると、そのオブジェクトに含まれる文字シーケンスは、オブジェクトが破棄されるまで変更できません。 。
これは String クラスの説明です。Xiao Xian'er は前にこの状況を見て、次のように上記の説明を理解できませんでした。
String a = "123"; a = "456"; // 打印出来的a为456 System.out.println(a)
これを見て Xiao Xian'er は理解できませんでした. これは明らかではありません 修正されましたか?なぜ不変クラスと言われるのでしょうか?
Xiao Xianer と彼の友人から学んだ後、String クラスの不変性がどこに反映されているかを理解しました。次に、上記の
a オブジェクトのメモリ ストレージ スペース図を見てみましょう 値を再度割り当てると、ヒープ内の元のインスタンス オブジェクトが再割り当てされるのではなく、新しいインスタンス オブジェクトが生成され、文字列 "456" を指すことがわかります。最後に生成されたインスタンス オブジェクトへ。以前のインスタンス オブジェクトはまだ存在します。再度参照されない場合はガベージ コレクションされます。
StringBuffer## StringBuffer オブジェクトは、可変文字シーケンスを持つ文字列を表します。StringBuffer が作成されると、StringBuffer () によって提供される追加が行われます。 insert()、reverse()、setCharAt()、setLength() およびその他のメソッドは、この文字列オブジェクトの文字シーケンスを変更できます。 StringBuffer を通じて最終的な目的の文字列が生成されたら、その toString() メソッドを呼び出して、それを String オブジェクトに変換できます。
StringBuffer b = new StringBuffer("123"); b.append("456"); // b打印结果为:123456 System.out.println(b);
b オブジェクトのメモリ空間マップを見てみましょう:
したがって、StringBuffer オブジェクトは、可変文字シーケンス。オブジェクトは再生成されず、新しい文字列を元のオブジェクトに連結できます。
StringBuilder クラスは、変更可能な文字列オブジェクトも表します。実際、StringBuilder と StringBuffer は基本的に似ており、2 つのクラスのコンストラクターとメソッドも基本的に同じです。違いは次のとおりです。StringBuffer はスレッド セーフですが、StringBuilder はスレッド セーフ関数を実装していないため、パフォーマンスがわずかに高くなります。
StringBuffer はどのようにしてスレッド セーフを実現するのでしょうか?
StringBuffer クラスに実装されたメソッド:
StringBuilder クラスに実装されたメソッド:
synchronized キーワード
Java9 の改善点
# Java9 では、文字列 (String、StringBuffer、StringBuilder を含む) の実装が改善されました。 Java 9 より前では、文字列は char[] 配列を使用して文字を格納するため、文字列内の各文字は 2 バイトを占有しますが、Java 9 では、文字列は byte[] 配列とエンコード フラグ フィールドを使用して文字を格納するため、文字列の各文字が占有します。たったの1バイト。したがって、Java9 の文字列はよりスペースが節約され、文字列の関数メソッドは影響を受けません。 プログラミング関連の知識について詳しくは、
プログラミング入門をご覧ください。 !
以上がstring、stringbuffer、stringbuilder の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。
