JAVAPRO_IR Telegram 4413
🔍 رازهای مهم جاوا برای مصاحبه‌ها

اگر سال‌ها با Java کار کرده باشید، احتمالاً فکر می‌کنید همه چیز را می‌دانید — ترفندها، نکات و حتی مشکلات پنهان. اما جاوا مثل یک همکار قدیمی است؛ درست وقتی فکر می‌کنید او را کاملاً می‌شناسید، نکته‌ای جدید رو می‌کند که نگاهتان را تغییر می‌دهد.
در اینجا چند واقعیت کمتر شناخته‌شده از جاوا را می‌بینید که حتی توسعه‌دهندگان باتجربه را هم غافلگیر می‌کند. اگر برای مصاحبه‌ی شغلی آماده می‌شوید یا می‌خواهید مهارت جاوای خود را ارتقا دهید، این لیست به شما کمک خواهد کرد.

➡️ مقدار null می‌تواند به هر نوع مرجعی Cast شود

در جاوا، شما می‌توانید null را به هر Reference Type مثل String یا Integer Cast کنید و Compiler هیچ خطایی نمی‌دهد. این کاملاً مجاز است — اما اگر بدون بررسی استفاده شود می‌تواند خطرناک باشد.

مثال:
public class NullCastingExample {
    public static void main(String[] args) {
        // null can be cast to any reference type
        String text = (String) null;
        Integer number = (Integer) null;

        // printing values
        System.out.println("Text: " + text);
        System.out.println("Number: " + number);
    }
}

📱 خروجی:

Text: null
Number: null


> اینجا خطای ClassCastException رخ نمی‌دهد چون شیء واقعی Cast نشده است. مشکل زمانی شروع می‌شود که متدی روی null فراخوانی کنید و با NullPointerException روبه‌رو شوید.

2️⃣ امکان داشتن چند متد main در یک کلاس

یک کلاس می‌تواند چند متد main داشته باشد. اما فقط متدی با امضای دقیق زیر به‌عنوان نقطه‌ی شروع برنامه شناخته می‌شود:
public static void main(String[] args)

بقیه‌ی متدهای main صرفاً متدهای معمولی هستند و می‌توانند پارامترهای مختلفی بگیرند.

مثال:
public class MultiMainExample {
    public static void main(String[] args) {
        // this is the actual entry point
        System.out.println("Main method with String[] args");

        // calling the overloaded main method
        main(42);
    }

    // overloaded main method with int parameter
    public static void main(int number) {
        System.out.println("Main method with int: " + number);
    }
}

📱 خروجی:

Main method with String[] args
Main method with int: 42


3️⃣ تفاوت عملگر == در مقایسه‌ی String ها

عملگر == در جاوا برای مقایسه‌ی Reference Equality (برابری آدرس حافظه) استفاده می‌شود. اما در مورد String Literals، به دلیل String Interning ممکن است گمراه‌کننده باشد.

مثال:
public class StringComparison {
    public static void main(String[] args) {
        // string literals are interned
        String a = "Java";
        String b = "Java";

        // new creates a separate object in the heap
        String c = new String("Java");

        // comparing references (true, same interned literal)
        System.out.println(a == b);

        // comparing references (false, different objects)
        System.out.println(a == c);

        // comparing actual values (true, values are equal)
        System.out.println(a.equals(c));
    }
}

📌 چرا مهم است؟
اگر به اشتباه برای مقایسه‌ی رشته‌ها از == استفاده کنید، ممکن است دچار باگ‌های ظریف شوید — مخصوصاً وقتی رشته‌ها به‌صورت پویا ساخته می‌شوند. همیشه برای مقایسه‌ی مقدار رشته از equals() استفاده کنید.


➡️اشتراک 👍لایک 💬کامنت

⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4



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

🔍 رازهای مهم جاوا برای مصاحبه‌ها

اگر سال‌ها با Java کار کرده باشید، احتمالاً فکر می‌کنید همه چیز را می‌دانید — ترفندها، نکات و حتی مشکلات پنهان. اما جاوا مثل یک همکار قدیمی است؛ درست وقتی فکر می‌کنید او را کاملاً می‌شناسید، نکته‌ای جدید رو می‌کند که نگاهتان را تغییر می‌دهد.
در اینجا چند واقعیت کمتر شناخته‌شده از جاوا را می‌بینید که حتی توسعه‌دهندگان باتجربه را هم غافلگیر می‌کند. اگر برای مصاحبه‌ی شغلی آماده می‌شوید یا می‌خواهید مهارت جاوای خود را ارتقا دهید، این لیست به شما کمک خواهد کرد.

➡️ مقدار null می‌تواند به هر نوع مرجعی Cast شود

در جاوا، شما می‌توانید null را به هر Reference Type مثل String یا Integer Cast کنید و Compiler هیچ خطایی نمی‌دهد. این کاملاً مجاز است — اما اگر بدون بررسی استفاده شود می‌تواند خطرناک باشد.

مثال:
public class NullCastingExample {
    public static void main(String[] args) {
        // null can be cast to any reference type
        String text = (String) null;
        Integer number = (Integer) null;

        // printing values
        System.out.println("Text: " + text);
        System.out.println("Number: " + number);
    }
}

📱 خروجی:

Text: null
Number: null


> اینجا خطای ClassCastException رخ نمی‌دهد چون شیء واقعی Cast نشده است. مشکل زمانی شروع می‌شود که متدی روی null فراخوانی کنید و با NullPointerException روبه‌رو شوید.

2️⃣ امکان داشتن چند متد main در یک کلاس

یک کلاس می‌تواند چند متد main داشته باشد. اما فقط متدی با امضای دقیق زیر به‌عنوان نقطه‌ی شروع برنامه شناخته می‌شود:
public static void main(String[] args)

بقیه‌ی متدهای main صرفاً متدهای معمولی هستند و می‌توانند پارامترهای مختلفی بگیرند.

مثال:
public class MultiMainExample {
    public static void main(String[] args) {
        // this is the actual entry point
        System.out.println("Main method with String[] args");

        // calling the overloaded main method
        main(42);
    }

    // overloaded main method with int parameter
    public static void main(int number) {
        System.out.println("Main method with int: " + number);
    }
}

📱 خروجی:

Main method with String[] args
Main method with int: 42


3️⃣ تفاوت عملگر == در مقایسه‌ی String ها

عملگر == در جاوا برای مقایسه‌ی Reference Equality (برابری آدرس حافظه) استفاده می‌شود. اما در مورد String Literals، به دلیل String Interning ممکن است گمراه‌کننده باشد.

مثال:
public class StringComparison {
    public static void main(String[] args) {
        // string literals are interned
        String a = "Java";
        String b = "Java";

        // new creates a separate object in the heap
        String c = new String("Java");

        // comparing references (true, same interned literal)
        System.out.println(a == b);

        // comparing references (false, different objects)
        System.out.println(a == c);

        // comparing actual values (true, values are equal)
        System.out.println(a.equals(c));
    }
}

📌 چرا مهم است؟
اگر به اشتباه برای مقایسه‌ی رشته‌ها از == استفاده کنید، ممکن است دچار باگ‌های ظریف شوید — مخصوصاً وقتی رشته‌ها به‌صورت پویا ساخته می‌شوند. همیشه برای مقایسه‌ی مقدار رشته از equals() استفاده کنید.


➡️اشتراک 👍لایک 💬کامنت

⚡️ @javapro_ir
✈️@group_javapro

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


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

View MORE
Open in Telegram


Telegram News

Date: |

Click “Save” ; During a meeting with the president of the Supreme Electoral Court (TSE) on June 6, Telegram's Vice President Ilya Perekopsky announced the initiatives. According to the executive, Brazil is the first country in the world where Telegram is introducing the features, which could be expanded to other countries facing threats to democracy through the dissemination of false content. Clear Today, we will address Telegram channels and how to use them for maximum benefit. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us


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