بکندباز

متد intern()‎ در جاوا

متد intern() یک نمایش متعارف از شیء رشته را برمی گرداند.

سینتکس متد intern() به صورت زیر است:

string.intern()

در اینجا، string یک شیء از کلاس Stringاست.


پارامترهای intern().

متد intern() هیچ پارامتری را نمی گیرد.


مقدار بازگشتی متد intern()

  • یک نمایش متعارف رشته را برمی گرداند

Intern کردن رشته ها در جاوا چیست؟

با intern کردن رشته ها در جاوا، تضمین می کنیم که تمام رشته هایی که محتوای یکسانی دارند، از حافظه یکسانی استفاده کنند.

فرض کنید، ما این دو رشته را داریم:

String str1 = "xyz";
String str2 = "xyz";

از آنجایی که هر دو str1 و str2 محتویات یکسانی دارند، هر دو این رشته ها حافظه یکسانی خواهند داشت. جاوا به طور خودکار کار intern کردن رشته ها را انجام می دهد.

اما اگر رشته‌ها را با استفاده از کلمه کلیدی new ایجاد کنید، این رشته‌ها حافظه مشابهی ندارند. مثلاً،

class Main {
  public static void main(String[] args) {

    String str1 = new String("xyz");
    String str2 = new String("xyz");


    System.out.println(str1 == str2); // false

  }
}

همانطور که از این مثال می بینید، هر دو str1 و str2 محتوای یکسانی دارند با این حال، آنها با هم برابر نیستند. زیرا حافظه مشترکی ندارند.

در این حالت می توانید به صورت دستی از متد intern() استفاده کنید تا از همان حافظه برای رشته هایی با محتوای یکسان استفاده شود.


مثال: متد intern()

class Main {
  public static void main(String[] args) {

    String str1 = new String("xyz");
    String str2 = new String("xyz");

    // str1 and str2 doesn't share the same memory pool
    System.out.println(str1 == str2); // false

    // using the intern() method
    // now both str1 and str2 share the same memory pool
    str1 = str1.intern();
    str2 = str2.intern();

    System.out.println(str1 == str2); // true
  }
}

همانطور که می بینید، هر دو str1 و str2 محتوای یکسانی دارند، اما در ابتدا برابر نیستند.

سپس از متد intern() استفاده می کنیم تا str1 و str2 از همان مخزن حافظه استفاده کنند. بعد از استفاده از intern() هر دوی str1 و str2 با هم برابر هستند.

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*