検索
ホームページJava&#&はじめるString、StringBuffer、StringBuilder の違いについての簡単な説明

Java 開発の面接では、String、StringBuider、StringBuffer の違いについてよく質問されますが、包括的かつ十分に詳しく答えていない人が多いのですが、これらの違いは何でしょうか?

String、StringBuffer、StringBuilder の違いについての簡単な説明

3 つはすべて文字列の操作に使用されます。通常、String は変数の定義に使用され、StringBuilder StringBuffer は通常、文字列の結合やその他の操作に使用されます。しかし実際には、String は文字列を結合するためにも使用できますが、なぜめったに使用されないのでしょうか? まずは 3 つの基礎となるコードから始めましょう。

String、StringBuffer、StringBuilder の違いについての簡単な説明

#String の基礎となるコードは、final で変更された char 配列です。これは、String 変数を定義した後、変数の内容が不変であることを意味します。

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

#StringBuilder と StringBuffer はどちらも AbstractStringBuilder から継承しており、このクラスの char 配列は継承しません。最終的な変更を使用します。内容は可変です。これは何を意味しますか?

例:

String s1= "a";
String s2 = new String("b") ;
String s3 = s1+s2;

その場合、文字列「ab」が得られます。これは、文字列の最後に不変の文字列がないため、3 つのオブジェクトが作成され、それらはすべてメモリを占有しており、この 3 つのオブジェクトは参照を失ったことがないため、jvm はガベージ コレクションできず、メモリ リソースが大量に浪費されます。これは開発では推奨されませんが、StringBuilder と StringBuffer にはそのような問題はありません。

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

基盤となるコードを通して、StringBuilder と StringBuffer が長さかどうかを決定していることがわかります。文字列の結合で十分であり、データをカプセル化する新しい配列を作成しますが、元のオブジェクトは参照を放棄してガベージ コレクションを待機するため、メモリの無駄が削減されます。そのため、文字列の結合やその他の操作では、通常、StringBuilder と StringBuffer を使用します。とありますが、両者の実行効率は異なり、StringBuilderの方が実行効率が高いのですが、これはなぜでしょうか?

String、StringBuffer、StringBuilder の違いについての簡単な説明

String、StringBuffer、StringBuilder の違いについての簡単な説明

基盤となるソース コードを見ると、StringBuffer は文字列を結合するときに同期ロックを使用するため、セキュリティが向上しますが、StringBuilder では同期ロックが使用されないことがわかります。同期ロックがかかるので効率が上がります。

ここで、これら 3 つの違いを理解する必要があります。 !

この記事は

Java 入門 列からのものです。ぜひ学習してください。

以上がString、StringBuffer、StringBuilder の違いについての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は源码时代で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版

SublimeText3 Mac版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール