JAVAPRO_IR Telegram 4541
📌 موضوع: String Pool در جاوا و تفاوت == با equals

در جاوا رشته‌ها (`String`) یک ویژگی خاص دارند به نام String Pool. این مکانیزم باعث می‌شود مدیریت حافظه بهینه‌تر شود.


🔎 String Pool چیست؟
وقتی شما یک رشته با لیترال (Literal) بسازید، جاوا آن را در یک حافظه‌ی خاص به نام String Pool نگه می‌دارد. اگر دوباره همان رشته را با همان مقدار بسازید، جاوا از همان شیء موجود در String Pool استفاده می‌کند.


📘 مثال ۱ – استفاده از String Pool:


public class StringPoolDemo {
public static void main(String[] args) {
String s1 = "Ali";
String s2 = "Ali";

System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
}
}


👉 چرا == اینجا true شد؟
چون هر دو متغیر به یک شیء یکسان در String Pool اشاره می‌کنند.


📘 مثال ۲ – استفاده از new String():


public class StringPoolDemo2 {
public static void main(String[] args) {
String s1 = new String("Ali");
String s2 = new String("Ali");

System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true
}
}


👉 این بار == false شد، چون هر بار که از new String() استفاده می‌کنیم، یک شیء جدید در حافظه Heap ساخته می‌شود (نه در String Pool).
اما equals() مقدار محتوای رشته را مقایسه می‌کند، بنابراین true می‌دهد.


📘 مثال ۳ – متد intern():


public class StringPoolDemo3 {
public static void main(String[] args) {
String s1 = new String("Ali");
String s2 = s1.intern(); // این رشته وارد String Pool می‌شود
String s3 = "Ali";

System.out.println(s2 == s3); // true
}
}


👉 متد intern() باعث می‌شود رشته وارد String Pool شود و از آن به بعد مقایسه با == هم true خواهد شد.


نتیجه‌گیری:

* همیشه از equals() برای مقایسه‌ی مقدار رشته‌ها استفاده کنید.
* == فقط بررسی می‌کند که دو متغیر به یک شیء یکسان در حافظه اشاره می‌کنند.
* بهینه‌سازی حافظه در جاوا برای رشته‌ها به کمک String Pool انجام می‌شود.

#کاربر_مبتدی


🆔 @javapro_ir
🆔 @group_javapro
5👍5



tgoop.com/javapro_ir/4541
Create:
Last Update:

📌 موضوع: String Pool در جاوا و تفاوت == با equals

در جاوا رشته‌ها (`String`) یک ویژگی خاص دارند به نام String Pool. این مکانیزم باعث می‌شود مدیریت حافظه بهینه‌تر شود.


🔎 String Pool چیست؟
وقتی شما یک رشته با لیترال (Literal) بسازید، جاوا آن را در یک حافظه‌ی خاص به نام String Pool نگه می‌دارد. اگر دوباره همان رشته را با همان مقدار بسازید، جاوا از همان شیء موجود در String Pool استفاده می‌کند.


📘 مثال ۱ – استفاده از String Pool:


public class StringPoolDemo {
public static void main(String[] args) {
String s1 = "Ali";
String s2 = "Ali";

System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
}
}


👉 چرا == اینجا true شد؟
چون هر دو متغیر به یک شیء یکسان در String Pool اشاره می‌کنند.


📘 مثال ۲ – استفاده از new String():


public class StringPoolDemo2 {
public static void main(String[] args) {
String s1 = new String("Ali");
String s2 = new String("Ali");

System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true
}
}


👉 این بار == false شد، چون هر بار که از new String() استفاده می‌کنیم، یک شیء جدید در حافظه Heap ساخته می‌شود (نه در String Pool).
اما equals() مقدار محتوای رشته را مقایسه می‌کند، بنابراین true می‌دهد.


📘 مثال ۳ – متد intern():


public class StringPoolDemo3 {
public static void main(String[] args) {
String s1 = new String("Ali");
String s2 = s1.intern(); // این رشته وارد String Pool می‌شود
String s3 = "Ali";

System.out.println(s2 == s3); // true
}
}


👉 متد intern() باعث می‌شود رشته وارد String Pool شود و از آن به بعد مقایسه با == هم true خواهد شد.


نتیجه‌گیری:

* همیشه از equals() برای مقایسه‌ی مقدار رشته‌ها استفاده کنید.
* == فقط بررسی می‌کند که دو متغیر به یک شیء یکسان در حافظه اشاره می‌کنند.
* بهینه‌سازی حافظه در جاوا برای رشته‌ها به کمک String Pool انجام می‌شود.

#کاربر_مبتدی


🆔 @javapro_ir
🆔 @group_javapro

BY برنامه نویسی جاوا | Java


Share with your friend now:
tgoop.com/javapro_ir/4541

View MORE
Open in Telegram


Telegram News

Date: |

Content is editable within two days of publishing Find your optimal posting schedule and stick to it. The peak posting times include 8 am, 6 pm, and 8 pm on social media. Try to publish serious stuff in the morning and leave less demanding content later in the day. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. How to create a business channel on Telegram? (Tutorial) The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot.
from us


Telegram برنامه نویسی جاوا | Java
FROM American