تفاوت کلیدی – String در مقابل StringBuffer در مقابل StringBuilder در جاوا
String، StringBuffer و String Builder کلاس هایی در جاوا هستند. رشته به طور گسترده در برنامه نویسی جاوا استفاده می شود. هنگامی که یک شی از String ایجاد می شود، امکان تغییر آن وجود ندارد. هر بار که تغییری در String رخ می دهد، یک رشته جدید ایجاد می کند. حتی اگر یک الحاق به یک رشته موجود باشد، یک رشته جدید ایجاد می کند. این باعث هدر رفتن حافظه می شود. کلاس های StringBuffer و StringBuilder در جاوا برای اصلاح String استفاده می شوند. تفاوت اصلی بین String، StringBuffer و StringBuilder در جاوا این است که String کلاسی برای ایجاد یک شی از نوع String است که دنباله ای از کاراکترها است، StringBuffer کلاسی است که برای تغییر رشته ها استفاده می شود که ایمنی رشته را فراهم می کند، و StringBuilder یک کلاس است. کلاسی که برای اصلاح رشته هایی که ایمنی رشته را تامین نمی کنند استفاده می شود.
String در جاوا چیست؟
کلاس رشته در بسته java.lang است. هر بار که برنامه نویس یک رشته ایجاد می کند، یک شی از نوع String است. رشته ها غیر قابل تغییر هستند به این معنی که وقتی شی ایجاد می شود، نمی توان آن را تغییر داد. اشیاء ایجاد شده با استفاده از کلاس های wrapper مانند Integer، Byte، Float، Double نیز تغییرناپذیر هستند. یک رشته به معنای واقعی کلمه در گیومه های دوتایی قرار می گیرد. به عنوان مثال، "سلام دنیا". هر بار که یک رشته واقعی ایجاد می شود، ماشین مجازی جاوا (JVM) استخر ثابت رشته را بررسی می کند. اگر رشته وجود داشته باشد، یک مرجع به مخزن ثابت رشته برگردانده می شود. اگر یک رشته جدید باشد، آن شی در استخر ثابت رشته ایجاد می شود.
شکل 01: برنامه جاوا با استفاده از String، StringBuffer و StringBuilder
به کد زیر مراجعه کنید.
String s1="سلام";
s1=s1 + "World";
System.out.println(s1);
در عبارت اول، s1 به "Hello" در مخزن ثابت String اشاره دارد. در عبارت دوم، JVM رشته موجود را تغییر نمی دهد. در عوض، یک رشته جدید به عنوان "Hello World" ایجاد می کند و s1 اکنون به آن رشته جدید اشاره می کند. شیء خروجی "Hello" همچنان در استخر ثابت رشته وجود دارد.
اگر کدی وجود دارد که این است،
String s1="سلام";
رشته s2=s1;
s1، s2 هر دو به شی رشته "Hello" اشاره خواهند کرد.
StringBuffer در جاوا چیست؟
کلاس StringBuffer برای تغییرپذیر کردن اشیاء String استفاده می شود. بنابراین، آن اشیاء را می توان تغییر داد. StringBuffer چهار سازنده را تعریف می کند. StringBuffer()، StringBuffer (اندازه int)، StringBuffer (String str)، StringBuffer (charSequence ch)
به کد زیر مراجعه کنید،
StringBuffer s1=StringBuffer جدید("سلام");
s1.append("World");
System.out.println(s1);
در عبارت 1، s1 به شی "Hello" در یک پشته اشاره دارد. شی قابل تغییر است زیرا با استفاده از StringBuffer ایجاد شده است. در عبارت 2، "World" به همان شی رشته "Hello" اضافه شده است.
اشیاء رشته ای ایجاد شده با کلاس StringBuffer می توانند حافظه را ذخیره کنند. StringBuffer ایمنی thread را فراهم می کند زیرا دو رشته نمی توانند به طور همزمان به یک روش در کلاس StringBuffer دسترسی داشته باشند. ایمنی نخ عملکرد StringBuffer را کاهش می دهد. کلاس StringBuffer شامل متدهایی مانند append()، insert()، reverse()، replace().
StringBuilder در جاوا چیست؟
کلاس StringBuilder برای تغییرپذیر کردن اشیاء String استفاده می شود. بنابراین، آن اشیاء را می توان تغییر داد. عملکرد مشابه StringBuffer است، اما این ایمنی رشته را فراهم نمی کند. StringBuilder سازنده هایی مانند StringBuilder()، StringBuilder(int size)، StringBuilder(String str) دارد.
به کد زیر مراجعه کنید.
StringBuilder s1=StringBuilder جدید ("سلام");
s1.append("World");
System.out.println(s1);
در عبارت 1، s1 به شی "Hello" در یک پشته اشاره دارد. شی قابل تغییر است زیرا با استفاده از StringBuilder ایجاد شده است. در عبارت 2، "World" به همان شی "Hello" String اضافه شده است. هیچ شی String کاملا جدیدی ایجاد نشده است.
اشیاء رشته ایجاد شده با کلاس StringBuilder می توانند حافظه را ذخیره کنند. برخلاف StringBuffer، StringBuilder ایمنی thread را فراهم نمی کند زیرا دو رشته می توانند به طور همزمان به یک روش در کلاس StringBuilder دسترسی داشته باشند. کلاس StringBuilder شامل متدهایی مانند append()، insert()، reverse()، replace().
شباهت بین String، StringBuffer و StringBuilder در جاوا چیست؟
همه را می توان برای ایجاد رشته ها استفاده کرد
تفاوت بین String StringBuffer و StringBuilder در جاوا چیست؟
String vs StringBuffer در مقابل StringBuilder |
|
رشته | رشته یک کلاس جاوا است که برای ایجاد یک شی از نوع String که دنباله ای از کاراکترها است استفاده می شود. |
StringBuffer | StringBuffer یک کلاس جاوا است که برای ایجاد اشیاء رشته ای استفاده می شود که می توان آنها را با ایمنی رشته تغییر داد. |
StringBuilder | StringBuilder کلاسی است که برای ایجاد اشیاء رشتهای استفاده میشود که میتوان آنها را بدون ایمنی رشته تغییر داد. |
تغییرپذیری | |
رشته | رشته یک کلاس غیرقابل تغییر است. |
StringBuffer | StringBuffer یک کلاس قابل تغییر است. |
StringBuilder | StringBuilder یک کلاس قابل تغییر است. |
ایمنی نخ | |
رشته | روشهای String ایمن هستند. |
StringBuffer | روش های StringBuffer ایمن و همگام هستند. |
StringBuilder | روش های StringBuilder ایمن و همگام نیستند. |
عملکرد | |
رشته | رشته سریع است. |
StringBuffer | StringBuffer کند است. |
StringBuilder | StringBuilder سریع است. |
خلاصه – String در مقابل StringBuffer در مقابل StringBuilder در جاوا
String، StringBuffer و StringBuilder به نظر یکسان هستند، اما معانی متفاوتی دارند. همه اینها کلاس های جاوا هستند. تفاوت String، StringBuffer و StringBuilder در جاوا این است که، String کلاسی برای ایجاد یک شی از نوع String است که مجموعهای از کاراکترها است، StringBuffer کلاسی است که برای اصلاح رشتهها و تامین امنیت رشته استفاده میشود، در حالی که StringBuilder یک کلاس است. کلاسی که برای اصلاح رشته ها استفاده می شود که ایمنی رشته را فراهم نمی کند.
دانلود PDF String vs StringBuffer vs StringBuilder در جاوا
می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت نقل قول برای اهداف آفلاین از آن استفاده کنید. لطفاً نسخه PDF را از اینجا دانلود کنید تفاوت بین String StringBuffer و StringBuilder در جاوا