بکندباز

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

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

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

string.intern()
Plain text

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


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

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


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

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

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

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

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

String str1 = "xyz";
String str2 = "xyz";
Plain text

از آنجایی که هر دو 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

  }
}
Java

همانطور که از این مثال می بینید، هر دو 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
  }
}
Java

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

آموزش مرتبط:  دستور git diff

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

backendbaz

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

دیدگاه‌ها

*
*