آموزش برنامه نویسی جاوا (بخش چهاردهم: معرفی و آموزش نحوه استفاده از کلاس های StringBuilder و StringBuffer )

استاندارد

در این مطلب، به بررسی دو کلاس مهم در برنامه نویسی جاوا می پردازیم. این کلاس ها نیز برای کار با رشته ها مورد استفاده قرار می گیرند. اهمیت این دو کلاس در هنگامی مشخص می شود که بخواهید در حد پردازش های خیلی بزرگ، که Cpu و حافظه قوی می خواهد، از این دو کلاس استفاده کنید. زیرا یک برنامه نویس مبتدی می تواند کار را به نحو دیگری پیش ببرد ولی استفاده از این دو کلاس برای یک برنامه نویسی حرفه ای قطعا پیشنهاد می شود.

کلاس StringBuilder در جاوای 5 معرفی شد.

تفاوت بین StringBuffer و StringBuilder در این است که متدهای موجود در کلاس StringBuilder ویژگی tread Safe بودن را ندارند به عبارت دیگر متدهای این کلاس باهم سنکرون نیستند. اما باید گفت که کلاس StringBuilder سرعت بیشتری دارد. پس تا حد امکان از این کلاس استفاده کنید.

اما اگر سنکرون بودن و tread safe بودن برایتان اهمیت دارد از کلاس StringBuffer استفاده کنید. روش استفاده از این کلاس ها برای الحاق رشته ها با هم یا concat کردن رشته ها به شکل کد زیر است:

در اینجا کار را با متدهای StringBuffer به جلو پیش می بریم ولی همان طور که گفته شد می توانید از متد StringBuilder نیز استفاده نمایید.

متدهای کلاس StringBuffer

اولین متدی که به آن می پردازیم متد append است. این متد برای اتصال دو رشته به هم به کار می رود. در واقع رشته ی دوم، به انتهای رشته ی اول ، چسبیده می شود.

در شکل زیر، انواع متغیرهایی که این متد می تواند به عنوان آرگومان ورودی اش بپذیرد را مشاهده می کنید. خروجی این متد نیز یک شی از نوع StringBuffer است.

کد زیر، مثالی برای این متد است:

StringBuffer myString1 = new StringBuffer("Gsm");
myString1.append(" Developers");
System.out.print(myString1);

خروجی کد بالا برابر است با:

Gsm Developers

مشاهده می کنید که رشته ای که در ابتدا به عنوان مقدار برای myString1 تعریف کرده بودیم (“Gsm”) با استفاده از متد append، به رشته ی دومی (“Developers “) متصل شده است.

دومین متدی که به آن می پردازیم، متد Reverse است. این متد زمانی به کار می رود که بخواهیم رشته را برعکس کنیم. یعنی کاراکتر انتهایی به کاراکتر اول بیاید و کاراکتر ماقبل انتهایی به کاراکتر دوم بیاید و به همین ترتیب رشته را بر عکس کند تا کاراکتر اول، به جای کاراکتر انتهایی بشیند.

نکته: دقت کنید که این متد ورودی نمی پذیرد.

کد زیر به عنوان مثالی از متد Reverse ، نحوه کار با این متد را به شما آموزش می دهد:

StringBuffer myString1 = new StringBuffer("Gsm Developers");
myString1.reverse();
System.out.print(myString1);

خروجی کد بالا :

srepoleveD msG

سومین متدی که به آن می پردازیم، متد Insert است. این متد مقداری را داخل یک StringBuffer درج می کند. یعنی داخل یک متن که به صورت رشته است. این متد دو آرگومان ورودی از کاربر دریافت میکند. اولین آرگومان به محلی که آن مقدار باید در StringBuffer درج شود اشاره می کند. و دومین آرگومان همان مقداری است که در StringBuffer درج می شود.

آرگومان های قابل پذیرش را می توانید در شکل زیر مشاهده کنید:

مثال این متد را هم می توانید در زیر مشاهده کنید:

StringBuffer myString1 = new StringBuffer("Gsm Developers");
myString1.insert(3, 123);
myString1.insert(17,".com");
System.out.print(myString1);

خروجی کد بالا:

Gsm123 Developers.com

چهارمین متد به حذف قسمتی از رشته StringBuffer می پردازد. این متد که delete نام دارد یک آرگومان ورودی شروع محل حذف رشته و یک آرگومان ورودی دوم به عنوان پایان محل حذف رشته از کاربر می گیرد و اقدام به حذف قسمت های خواسته شده می کند.

مثالی از این متد را در زیر مشاهده می کنید:

نکته: به قسمت هایی که بر اساس دو مقداری که داده شد، حذف می شوند دقت کنید.

StringBuffer myString1 = new StringBuffer("0123456");
myString1.delete(3,5);
System.out.print(myString1);

خروجی کد بالا ( به عدد 5 که در رشته حذف نشده است دقت کنید):

01256

آخرین متدی که به آن می پردازیم متد Replace است. این متد قسمتی از متن داخل رشته را با متنی که به عنوان آرگومان به آن می دهیم جایگزین می کند.

مشاهده می کنید که اولین آرگومان این متد، محل شروع قسمتی که می خواهیم جایگزین شود، آرگومان دوم، محل پایان آن قسمت و آرگومان سوم یک رشته است که آن رشته جایگزین آن محل می شود.

کد زیر یک مثال از این متد را نشان می دهد:

StringBuffer myString1 = new StringBuffer("0123456");
myString1.replace(3, 5, "Gsm");
System.out.print(myString1);

خروجی این کد:

012Gsm56

متدهای length ، index و substring در این دو کلاس نیز وجود دارند. این متدها در بخش های قبلی توضیح داده شد و کار با آن ها همانند کار را کلاس String است.