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: |

The initiatives announced by Perekopsky include monitoring the content in groups. According to the executive, posts identified as lacking context or as containing false information will be flagged as a potential source of disinformation. The content is then forwarded to Telegram's fact-checking channels for analysis and subsequent publication of verified information. Unlimited number of subscribers per channel With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings. Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! During the meeting with TSE Minister Edson Fachin, Perekopsky also mentioned the TSE channel on the platform as one of the firm's key success stories. Launched as part of the company's commitments to tackle the spread of fake news in Brazil, the verified channel has attracted more than 184,000 members in less than a month.
from us


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