JAVAPRO_IR Telegram 4540
📌موضوع: Immutable Objects در جاوا و ارتباط آن با Pass by Value

در جاوا بعضی از کلاس‌ها Immutable هستند؛ یعنی بعد از ساخته شدن، حالت داخلی آن‌ها دیگر تغییر نمی‌کند.
معروف‌ترین نمونه‌ی Immutable در جاوا، کلاس String است.

🔎 ویژگی اصلی Immutable این است که اگر به نظر برسد در حال تغییر دادن شیء هستیم، در واقع یک شیء جدید ساخته می‌شود و رفرنس متغیر به آن اشاره می‌کند.


📘 مثال ۱ – رشته‌ها (String):

public class ImmutableDemo {
    public static void main(String[] args) {
        String s = "Ali";
        changeString(s);
        System.out.println("Original: " + s); // خروجی: Ali
    }

    static void changeString(String str) {
        str = str + " Reza"; // شیء جدید ساخته می‌شود
        System.out.println("Inside method: " + str); // خروجی: Ali Reza
    }
}


👉 چرا خروجی نهایی هنوز Ali است؟
چون شیء رشته تغییر نکرد، بلکه یک String جدید ساخته شد و فقط رفرنس محلی (str) در متد به آن اشاره کرد.


📘 مثال ۲ – مقایسه با Mutable Object (مثل StringBuilder):

public class MutableDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Ali");
        changeBuilder(sb);
        System.out.println("After method: " + sb); // خروجی: Ali Reza
    }

    static void changeBuilder(StringBuilder builder) {
        builder.append(" Reza"); // همان شیء تغییر می‌کند
    }
}


👉 این بار شیء تغییر کرد، چون StringBuilder یک کلاس Mutable است.


نتیجه‌گیری:

* جاوا همیشه Pass by Value است، اما رفتار Immutable vs Mutable تعیین می‌کند که داده‌ها "به ظاهر" تغییر می‌کنند یا نه.
* در مورد Immutableها مثل String، هر تغییری منجر به ساخت یک شیء جدید می‌شود.
* در مورد Mutableها مثل StringBuilder یا ArrayList، تغییرات مستقیماً روی همان شیء اثر می‌گذارد.

#کاربرـپیشرفته



🆔 @javapro_ir
🆔 @group_javapro
👍51🗿1



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

📌موضوع: Immutable Objects در جاوا و ارتباط آن با Pass by Value

در جاوا بعضی از کلاس‌ها Immutable هستند؛ یعنی بعد از ساخته شدن، حالت داخلی آن‌ها دیگر تغییر نمی‌کند.
معروف‌ترین نمونه‌ی Immutable در جاوا، کلاس String است.

🔎 ویژگی اصلی Immutable این است که اگر به نظر برسد در حال تغییر دادن شیء هستیم، در واقع یک شیء جدید ساخته می‌شود و رفرنس متغیر به آن اشاره می‌کند.


📘 مثال ۱ – رشته‌ها (String):

public class ImmutableDemo {
    public static void main(String[] args) {
        String s = "Ali";
        changeString(s);
        System.out.println("Original: " + s); // خروجی: Ali
    }

    static void changeString(String str) {
        str = str + " Reza"; // شیء جدید ساخته می‌شود
        System.out.println("Inside method: " + str); // خروجی: Ali Reza
    }
}


👉 چرا خروجی نهایی هنوز Ali است؟
چون شیء رشته تغییر نکرد، بلکه یک String جدید ساخته شد و فقط رفرنس محلی (str) در متد به آن اشاره کرد.


📘 مثال ۲ – مقایسه با Mutable Object (مثل StringBuilder):

public class MutableDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Ali");
        changeBuilder(sb);
        System.out.println("After method: " + sb); // خروجی: Ali Reza
    }

    static void changeBuilder(StringBuilder builder) {
        builder.append(" Reza"); // همان شیء تغییر می‌کند
    }
}


👉 این بار شیء تغییر کرد، چون StringBuilder یک کلاس Mutable است.


نتیجه‌گیری:

* جاوا همیشه Pass by Value است، اما رفتار Immutable vs Mutable تعیین می‌کند که داده‌ها "به ظاهر" تغییر می‌کنند یا نه.
* در مورد Immutableها مثل String، هر تغییری منجر به ساخت یک شیء جدید می‌شود.
* در مورد Mutableها مثل StringBuilder یا ArrayList، تغییرات مستقیماً روی همان شیء اثر می‌گذارد.

#کاربرـپیشرفته



🆔 @javapro_ir
🆔 @group_javapro

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


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

View MORE
Open in Telegram


Telegram News

Date: |

Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. Activate up to 20 bots With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. More>> Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment.
from us


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